这篇内容主要是作者对字符串进行理解总结
1. Python语言中的字符串有两大特点:
- 字符串是不可变的。
- 字符串是字符有序的集合。
1.1字符串的不可变性:
- eg:将hello 变为Hello:
s='hello'
s[0] = 'H'
结果报错:TypeError: 'str' object does not support item assignment
应该运行如下:
s='hello'
# s[0] = 'H'
s = 'H' + s[1:]
print(s)
因为Python字符串是不可变对象,所以对字符串操作的时候会得到一个新的字符串,新的字符串会占用一块独立的内存。
所以在编写程序的时候尽量避免产生过多的中间结果。中间结果越多,程序的性能就越差。牢记字符串的不可变性。
1.2有序的集合:
字符串是有序的集合,可以通过分片和索引的方式定位与截取。对于分片操作来说,是索引操作的延伸。
需要注意,在Python中分片和索引可以应用于任何有序集合(字符串、列表和元组)。
为了代码可读性,尽量不要同时指定分片的开始、结束、步长,也不要使用负数的。
2.字符串函数
2.1 in 判断子字符串是否存在
>>> s='hello'
>>> 's' in s
False
>>> 'o' in s
True
>>> 'he' in s
True
2.2 大小写相关转化方法
>>> s='Hello python!'
>>> s.upper() #转换为大写
'HELLO PYTHON!'
>>> s.lower() #转换为小写
'hello python!'
>>> s.capitalize() #转换为首字母大写
'Hello python!'
>>> s.swapcase() #将大小写交换
'hELLO PYTHON!'
2.3 startswith和endswith
分别用来判断,参数是否存在于字符串的前缀或者后缀。
- eg.找出当前目录的Python文件:
- 在某个目录下打开cmd,输入idle:
C:\Users******> idle
2.引用os包,遍历所有文件,并判断出Python文件:
>>> import os
>>> [ item for item in os.listdir() if item.endswith('.py')]
['click_package.py', 'sys.argv.py']
前缀和后缀的判断常常用于查找相同文件类型,以及数据库日志中具有相同前缀但以不同日期结尾的文件。
2.4 find 查找类函数
>>> s = 'Hello python!'
>>> s.find('l')
2 # 第一个l出现的位置
>>> s.find('o',5) # 指定从顺序5以后的字符中查找0
10 # 返回0的位置
>>> s.find('haha')
-1 # 查找为空时,返回-1,表示一次情况
注意:
find查找与in判断的区别:
find查找不到时,返回-1;in判断结果为Ture
or False
。
2.5 字符串的操作
由于字符串的不可变性,以下函数作用后,生成新的对象,而不是对原来的对象修改,需要重新指定变量。
2.5.1 join 用于连接字符串或者列表
>>> '+'.join('Hello python!')
'H+e+l+l+o+ +p+y+t+h+o+n+!'
join函数对前面的分隔符没有要求,可以使用空字符。任何字符都可以插入到字符串中。
join函数中传入参数不仅仅限于字符串,任何可迭代的对象都可以作为参数传入(列表元组等)。最终生成巨大的字符串。
join函数用处很广,涉及类型转换及文件名拼接等都会用到它。
>>> '..'.join(('hello','python')) #元组作为参数传入
'hello..python'
2.5.2 split 用于拆分字符串,拆分后生成列表
>>> s = 'sys.argv.py'
>>> s.split('.') #以.为分隔符进行拆分
['sys', 'argv', 'py']
如果不传参数,默认按空白字符进行拆分。
2.5.3 strip 用于去掉字符串两边的空白符
>>> s = ' \tHello, \tWorld \n'
>>> s.strip()
'Hello, \tWorld' # 中间的空白字符及空格不受影响
只能从两边开始去除字符,去除时,并不是按照参数顺序
>>> a=s.strip()
>>> a.strip('Hold')
'ello, \tWor' #字符o,不位于字符串两边,所以无法去除
2.6 字符串格式化
这是一种更高级的方法来组合字符串。
一般有两种方法:%表达式和format函数
2.6.1% 表达式
用于格式化字符串操作,控制字符串的呈现格式
2.6.1.1 浮点数
>>> '%f' % 15.26546546
'15.265465' # %f 保留小数点后面六位有效数字
>>> ' %(price)f' % {'price': 15.26546546}
' 15.265465' # (price)这是指定引用名称
>>> '价格是:%(price)f' % {'price': 15.26546546}
'价格是:15.265465' # 可以直接添加字符串,形成新的语句
>>> '价格是:%(price).2f' % {'price': 15.26546546}
'价格是:15.27' #.2f 表示保留两位小数
2.6.1.2 整数
>>> '%d' % 20
'20' # %d 输出十进制
>>> '%o' % 20
'24' # %o 输出八进制
>>> '%x' % 20
'14' # %x 输出十六进制
2.6.1.2 字符串
>>> '%s' % 'hello world'
'hello world' # %s 表示取字符串
>>> '%.5s' % 'hello world'
'hello' # %.5s 表示截取5位字符串
2.6.2 format函数
它通过{}和:来代替%
2.6.2.1 定位
>>> 'welcome to {} {} _python'.format('hello','world')
'welcome to hello world _python'
# {} 依次传递参数至{}
>>> 'welcome to {1} {0} _python'.format('hello','world')
'welcome to world hello _python'
# {} 按下标的方式传递
>>> 'welcome to {1} {0} _python {1} {1}'.format('hello','world')
'welcome to world hello _python world world'
# {} 一个参数可以多次使用
2.6.2.2 格式
>>> '{:.2f}'.format(3.1415926)
'3.14'
>>> '{1:^10.2f}'.format(3.1415926,5.555555)
' 5.56 '
# ^表示居中;10代表字符长度;.2f表示双精度浮点型数字
微信关注.png
网友评论