1 ‘’‘字符串方法’’’
2
3 #index,字符串查找,返回第一个匹配到的索引值,没有就报错,可以提供开始,结束位置
4 s = ‘xyzabc’
5 ret = s.index(‘za’) #结果为2
6 ret = s.index(‘z’,2) #结果为2
7 #rindex,反向查找,结果和index方法得到的结果一样
8 #find,也是字符串查找,与index不同的是找不到时,不会报错,而是返回-1,注意bool(-1)为True
9
10
11 #split,字符串分隔,如果不指定分割符,则默认采用任意形式的空白字符:空格,tab(\t),换行(\n),回车(\r)以及formfeed
12 res = ‘a b c d\ne’.split() #结果res为[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]
13 res = ‘a🅱️c:d’.split(’:’) #结果为[‘a’, ‘b’, ‘c’, ‘d’]
14 #rsplit,从字符串尾部开始分割,没有设置maxsplit参数时和split的结果一样
15 #splitlines用于将多行字符串,列表的每个元素为一行字符串,默认不带换行符
16
17
18 #partition,类似于s.split(sep, 1),只是输出是一个包括了sep的元祖,且没有默认分隔符sep
19 res = ‘a🅱️c:d’.partition(’:’) #结果为(‘a’, ‘:’, ‘b:c:d’)
20 #rpartition,从字符串末尾开始执行partition方法
21 res = ‘a🅱️c:d’.rpartition(’:’) #结果为(‘a🅱️c’, ‘:’, ‘d’)
22
23
24 #strip,去掉字符串两端的字符,如果没指定字符,则默认去掉任意形式的空白字符:空格,tab(\t),换行(\n),回车(\r)以及formfeed
25 res = ‘abcd’.strip(‘a’) #结果res为’bcd’
26 res = ’ abcd \n’.strip() #结果res为’abcd’,可以通过len(res)验证
27 #rstrip,去掉右端的字符
28 #lstrip,去掉左端的字符
29
30
31 #join,字符串拼接
32 #format,字符串格式化
33 #解决万恶的‘+’号,每次’+‘操作都会创建一个新的对象,就需要在内存空间开辟一块新的区域来存储;所以大量使用’+‘会浪费内存空间
34 #解决方法1,使用join
35 #join,字符串拼接
36 li = [‘a’, ‘b’]
37 res = ‘:’.join(li) #使用字符串来拼接一个可迭代对象的所有元素,结果res为’a:b’
38 #解决方法2,使用format,有两种方式:
39 #方式1,其中{0}可以简写为{}:
40 res = ‘my name is {0}, my age is {1}’.format(‘winter’,30) #{0},{1}为实参的索引
41 #方式2:
42 res = ‘my name is {name}, my age is {age}’.format(name=‘winter’, age=30)
43 #或者直接下面这样
44 userInfo = {‘name’:‘winter’,‘age’:30}
45 res = ‘my name is {name}, my age is {age}’.format(**userInfo)
46 #或者用format_map(python3.x新增)
47 userInfo = {‘name’:‘winter’,‘age’:30}
48 res = ‘my name is {name}, my age is {age}’.format_map(userInfo)
49 #解决方法3,除了format以外,还可以使用占位符%,看上去没那么高级,同样有两种方式
50 #方式1
51 res = ‘my name is %s, my age is %s’%(‘winter’,30)
52 #方式2
53 userInfo = {‘name’:‘winter’,‘age’:30}
54 res = ‘my name is %(name)s, my age is %(age)s’%userInfo
55 #结果为’my name is winter, my age is 30’
56
57 #replace,字符串替换,因为字符串为不可变数据类型,所以原字符串不会改变,改变的字符串以返回值形式返回
58 s = ‘123xyz’
59 ret = s.replace(‘1’,‘a’) #结果s不变,ret为’a23xyz’
60 ret = s.replace(‘12’, ‘ab’) #结果为’ab3xyz’
61
62
63 #maketrans和translate,一对好基友;用于字符串替换和删除,很好用,python2.x与python3.x语法不同
64 #maketrans用于创建翻译表,translate用于翻译表
65 s = ‘abccba’
66 trans_table = str.maketrans(‘ab’,‘12’,‘c’)
67 res = s.translate(trans_table) #结果为’1221’,注意与replace的区别
68
69
70 s.count(strings) #count,统计字符串中字符的数目
71
72
73 s.encode() #以某种编码格式编码,比如utf-8
74
75
76 #大小写切换类方法
77 s = ‘aBcD’
78 res = s.capitalize() #首字母大写,结果res为’Abc’
79 res = s.lower() #所有字母小写,结果res为’abcd’,注意仅对ASCII编码的字母有效
80 res = s.casefold() #所有字母小写,结果res为’abcd’,注意对unicode编码的字母有效
81 res = s.upper() #所有字母大写,结果res为’ABCD’
82 res = s.swapcase() #字符串中大小写互换,结果res为’AbCd’
83 s = ‘aB cD,ef’
84 res = s.title() #每个单词首字母大写,结果res为’Ab Cd,Ef’,其判断“单词”的依据则是基于空格和标点
85
86
87 #字符串判断类方法,以下方法除了isspace()以外,对于空字符串都返回False
88 s.isalpha() #判断字符串是否全为字母,等价于1+KaTeX parse error: Expected 'EOF', got '#' at position 119: …0, 128, 0, 1)">#̲</span><span st…
96 s.isidentifier() #判断标识符是否合法
97 s.isspace() #判断是否为任意形式的空白字符:空格,tab(\t),换行(\n),回车(\r)以及formfeed
98 s.isprintable() #判断字符串是否可打印
99 s.startswith(strings) #判断字符串是否以某个字符串开头
100 s.endswith(stings) #判断字符串是否以某个字符串结尾
101
102
103 #center,ljust,rjust,zfill字符串排版,填充
104 s = ‘123’
105 res = s.center(50,’-’) #center是字符串居中,结果为-----------------------123------------------------
106 #ljust为居左,rjust为居右,zfill使用0来左填充
107
108
109 s.expandtabs() #expandtables,用于将字符串中的tab字符转换为空格,如果没有指定tabsize,默认为8个
a-zA-Z ↩︎