将字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width。fillchar默认为空格。如果width小于字符串的长度,则无法填充直接返回字符串本身(不会创建新字符串对象)。
例如:
1.使用下划线填充并居中字符串
>>> print('ab'.center(4,'_'))
_ab_
>>> print('ab'.center(5,'_'))
__ab_
2.使用默认的空格填充并居中字符串
>>> print('ab'.center(4))
ab
>>> print(len('ab'.center(4)))
4
3.width小于字符串长度
>>> print('abcde'.center(3))
abcde
3.2 ljust和rjust
S.ljust(width[, fillchar])
S.rjust(width[, fillchar])
ljust()使用fillchar填充在字符串S的右边,使得整体长度为width。rjust()则是填充在左边。如果不指定fillchar,则默认使用空格填充。
如果width小于或等于字符串S的长度,则无法填充,直接返回字符串S(不会创建新字符串对象)。
例如:
>>> print('xyz'.ljust(5,'_'))
xyz__
>>> print('xyz'.rjust(5,'_'))
__xyz
3.3 zfill
S.zfill(width)
用0填充在字符串S的左边使其长度为width。如果S前右正负号+/-,则0填充在这两个符号的后面,且符号也算入长度。
如果width小于或等于S的长度,则无法填充,直接返回S本身(不会创建新字符串对象)。
>>> print('abc'.zfill(5))
00abc
>>> print('-abc'.zfill(5))
-0abc
>>> print('+abc'.zfill(5))
+0abc
>>> print('42'.zfill(5))
00042
>>> print('-42'.zfill(5))
-0042
>>> print('+42'.zfill(5))
+0042
4.子串搜索
4.1 count
S.count(sub[, start[, end]])
返回字符串S中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界。
例如:
>>> print('xyabxyxy'.count('xy'))
3
# 次数2,因为从index=1算起,即从'y'开始查找,查找的范围为'yabxyxy'
>>> print('xyabxyxy'.count('xy',1))
2
# 次数1,因为不包括end,所以查找的范围为'yabxyx'
>>> print('xyabxyxy'.count('xy',1,7))
1
# 次数2,因为查找的范围为'yabxyxy'
>>> print('xyabxyxy'.count('xy',1,8))
2
4.2 endswith和startswith
S.endswith(suffix[, start[, end]])
S.startswith(prefix[, start[, end]])
endswith()检查字符串S是否已suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。
同理startswith()用来判断字符串S是否是以prefix开头。
例如:
1.suffix是普通的字符串时。
>>> print('abcxyz'.endswith('xyz'))
True
# False,因为搜索范围为'yz'
>>> print('abcxyz'.endswith('xyz',4))
False
# False,因为搜索范围为'abcxy'
>>> print('abcxyz'.endswith('xyz',0,5))
False
>>> print('abcxyz'.endswith('xyz',0,6))
True
2.suffix是元组(tuple)时,只要tuple中任意一个元素满足endswith的条件,就返回True。
# tuple中的'xyz'满足条件
>>> print('abcxyz'.endswith(('ab','xyz')))
True
# tuple中'ab'和'xy'都不满足条件
>>> print('abcxyz'.endswith(('ab','xy')))
False
# tuple中的'z'满足条件
>>> print('abcxyz'.endswith(('ab','xy','z')))
True
4.3 find,rfind和index,rindex
S.find(sub[, start[, end]])
S.rfind(sub[, start[, end]])¶
S.index(sub[, start[, end]])
S.rindex(sub[, start[, end]])
find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束end的搜索位置。
index()和find()一样,唯一不同点在于当找不到子串时,抛出ValueError错误。
rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。
同理rindex()。
例如:
>>> print('abcxyzXY'.find('xy'))
3
>>> print('abcxyzXY'.find('Xy'))
-1
>>> print('abcxyzXY'.find('xy',4))
-1
>>> print('xyzabcabc'.find('bc'))
4
>>> print('xyzabcabc'.rfind('bc'))
7
>>> print('xyzabcabc'.rindex('bcd'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
可以使用in操作符来判断字符串S是否包含子串sub,它返回的不是索引位置,而是布尔值。
>>> 'xy' in 'abxycd'
True
>>> 'xyz' in 'abxycd'
False
5.替换
5.1 replace
S.replace(old, new[, count])