0
点赞
收藏
分享

微信扫一扫

python基础(9):字符串(附有代码)

本篇简介

         在上一章《python基础(8):元组和集合(附有代码)》中我们详细介绍了元组、集合等多项概念。这一篇文章我们主要来学习python中的字符串

目录

本篇简介

一、字符串的驻留机制

二、字符串的常用操作

2.1 字符串的查询操作方法

 2.2 字符串的大小写转换操作的方法

2.3 字符串内容对齐操作的方法

2.4 字符串劈分操作的方法

 2.5 判断字符串操作的方法

2.6 字符串操作的其他方法

 三、字符串的比较

四、字符串的切片操作

五、格式化字符串

 六、字符串的编码转换


一、字符串的驻留机制

1.字符串:在python中字符串是基本数据类型,是一个不可变的字符序列。

2.字符串驻留机制

(1)仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量

#字符串的驻留机制
a = 'python'
b = "python"
c = '''python'''
print(a,id(a))  #输出结果:python 2713985600368
print(b,id(b))  #输出结果:python 2713985600368
print(c,id(c))  #输出结果:python 2713985600368

(2)驻留机制的几种情况(交互模式)

  • 字符串的长度为0或1时

  • 符合标识符的字符串

  • 字符串只在编译时进行驻留,而非运行时

  • [-5,256]之间的整数数字

(3)驻留机制的优缺点

  • 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的

  • 在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比“+”效率高

二、字符串的常用操作

2.1 字符串的查询操作方法

 2.2 字符串的大小写转换操作的方法

s = 'hello,python'
a = s.upper() #转成大写之后,会产生一个新的字符串对象
print(a,id(a))      #运算结果:HELLO,PYTHON 2252801261296
print(s,id(s))      #运算结果:hello,python 2252801362800
b = s.lower()  #转换之后,会产生一个新的字符串对象
print(s.lower(),id(s.lower()))      #运算结果:hello,python 2252803178608
print(s,id(s))      #运算结果:hello,python 2252801362800
print(b==s)         #运算结果:True
print(b is s) #False运算结果:False

s2 = 'hello,Python'
print(s2.swapcase()) #运算结果:HELLO,pYTHON
print(s2.title())    #运算结果:Hello,Python

2.3 字符串内容对齐操作的方法

2.4 字符串劈分操作的方法

 2.5 判断字符串操作的方法

        待补充

2.6 字符串操作的其他方法

 三、字符串的比较

        待补充

四、字符串的切片操作

        待补充

五、格式化字符串

1.格式化字符串的两种方式

(1)%作占位符

(2){ }作占位符

#格式化字符串
#(1)%占位符
name = '张三'
age = 20
print('我叫%s,今年%d岁'%(name,age))        #运行结果:我叫张三,今年20岁
#(2){ }占位符
print('我叫{0},今年{1}岁'.format(name,age))	#运行结果:我叫张三,今年20岁
#(3)f-string
print(f'我叫{name},今年{age}岁')			#运行结果:我叫张三,今年20岁
print('%10d' %99)  #10表示宽度                    #运行结果:        99
print('%.3f' % 3.1415926) #.3表示小数点后三位      #运行结果:3.142
#同时表示宽度和精度
print('%10.3f' %3.1415926) #一共总宽度为10,小数点后3位      #运行结果:     3.142
print('hellohello')										#运行结果:hellohello
print('{0:.3}'.format(3.1415926)) #.3表示的是一共三位有效数字运行结果:3.14
print('{:.3f}'.format(3.1415926)) #.3f表示的是3位小数运行结果:3.142
print('{:10.3f}'.format(3.1415926)) #同时设置宽度和精度,一共是10位,3位是小数

 六、字符串的编码转换

1.为什么需要字符串的编码转换:

         在Python3中,默认采用 UTF-8 编码;而在Python中,有两种常见的字符串类型,一种是str,一种是bytes,这两种类型的字符串不能拼在一起使用,如果我们需要在网络上传输或保存到磁盘上时,就应该进行编码转换操作,即将str转为二进制数据(bytes)。要实现此功能,需要使用encode()方法

        更多信息请移步《Python字符串编码转换》。

2.编码与解码的方式

(1)编码:将字符串转换为二进制数据(bytes)

(2)解码:将bytes类型的数据转换成字符串类型

s = '天涯共此时'
#编码
print(s.encode(encoding='GBK'))  #在GBK这种编码格中,一个中文占两个字节
print(s.encode(encoding='UTF-8'))#在UTF-8这种编辑格式中,一个中文占三个字节
#解码
#byte代表就是一个二进制数据(字节类型的数据)
byte = s.encode(encoding='GBK') #编码
print(byte.decode(encoding='GBK')) #解码

byte = s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))
举报

相关推荐

0 条评论