Python字符串函数总结

1,952 阅读6分钟

1. capitalize()

首字母大写,其它字母小写。

>>> name='z zlINK'
>>> name.capitalize()
'Z zlink'

2. casefold() & lower()

casefold()与lower()相似,将字符串中的大写字符转换为小写字符。
区别在于,lower()只对ASCII编码,即‘A-Z’有效,对其他语言(非汉语或者英语)则只能使用casefold()方法。

>>> S2 = "ß"  #德语
>>> S2.casefold()
'ss'

3. center(self,width,fillchar=None)

返回一个将原字符串居中的新字符串,使用填充字符(默认为空格)填充剩下的字符串。

  • self : 一般忽略
  • width : 新字符串的长度
  • fillchar : 填充字符
>>>str = 'runoob'
>>> str.center(20, '*')
'*******runoob*******'
>>> str.center(20)
'       runoob       '
>>>

4. count(sub,start=0,end=len(string))

计算一个指定的字符在指定范围内出现了几次。

>>> s='this is an example'
>>> s.count('is')
2
>>> s.count('is',0,4)
1

5. encode() & decode()

  • encode() -- 编码
  • decode() -- 解码

6. endswith() & startswith()

endswith()判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型。
startswith()判断字符串开头是否是某字符或子字符串。

endswith(str,beg=[0,end=len(string)])

  • str: 指定的字符或子字符串,可使用元祖,会逐一匹配
  • beg : 设定检测的起始位置
  • end : 设定检测的结束位置
>>> t='il'
>>> s='ilovepython'
>>> s.startswith(t)
True
>>> t=('h','o','n')
>>> s.endswith(t)
True
>>> s.endswith(t,-3)
True

7. find() & index()

检测指定范围内的字符串中是否包含子字符串str,如果包含则返回其索引值,否则返回-1。

find(str, beg=0, end=len(string))

  • str : 指定检索的字符串
  • beg : 开始的索引
  • end : 结束的索引
>>> s='ilovepython'
>>> t='il'
>>> s.find(t)
0
>>> s.find(t,4)
-1

index()与find()功能一样,不同的地方在于如果不存在指定字符串则报一个异常。

8. format()

增强的字符串格式化功能。
详见Python format 格式化函数

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'
# 设置参数,可通过字典和列表设置
>>> "name:{name}, job: {job}".format(name="link", job="hero")
'name:link, job: hero'

9. isalnum()

检测字符串是否由字母和数字组成。

>>> s='a啊1'
>>> s.isalnum()
True
>>> s='a 1'
>>> s.isalnum()
False

10. isalpha()

检测字符串是否只由字母组成。

11. isdecimal() & isdigit() & isnumeric()

均为判断字符串是否只由数字组成。
isdigit()比isdecimal()适用范围更广,一些特殊的数字(比如带圈数字①②)也返回True。
isnumeric()适用范围更广,可识别中文。

>>> n='2二'
>>> n.isdecimal()
False
>>> n.isdigit()
False
>>> n.isnumeric()
True

12.isprintable()

判断字符串中所有字符是否都是可打印字符(in repr())或字符串为空。

Unicode字符集中“Other” “Separator”类别的字符为不可打印的字符(但不包括ASCII码中的空格(0x20))。可用于判断转义字符。

ASCII码中第0~32号及第127号是控制字符;第33~126号是可打印字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母。

Python3 isprintable() 方法

13. isspace()

判断字符串是否全为空格组成,是则返回True,否则返回False, 字符串为空也返回False。

14. title() & istitle()

title()将字符串变为标题,即其中的每个单词首字母均为大写。
istitle()判断字符串是否是标题。

15. isupper() & islower()

判断字符串中的字符是否全为大写/小写,是为True,否为False。
非英文字符不影响判断结果。

16. join()

将字符串中的每个元素按指定分隔符进行连接。
'str'.join(seq)

  • str:分隔符。可以为空
  • seq:要连接的元素序列、字符串、元组、字典
    即:以str作为分隔符,将seq所有的元素合并成一个新的字符串。
>>> s='我爱python'
>>> ' '.join(s)
'我 爱 p y t h o n'
>>> ''.join(s)
'我爱python'
>>> "_".join(s)
'我_爱_p_y_t_h_o_n'
#对序列进行操作(分别使用' '与':'作为分隔符)   
>>> seq1 = ['hello','good','boy','doiido'] 
>>> ' '.join(seq1)
hello good boy doiido 
>>> ':'.join(seq1) 
hello:good:boy:doiido     
#对字符串进行操作   
>>> seq2 = "hello good boy doiido"
>>> ':'.join(seq2) 
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#对元组进行操作   
>>> seq3 = ('hello','good','boy','doiido') 
>>> ':'.join(seq3) 
hello:good:boy:doiido     
#对字典进行操作   
>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4} 
>>> ':'.join(seq4) 
boy:good:doiido:hello 

17. ljust() & rjust()

指定宽度,让字符串左/右对齐,剩下的用指定字符填满,默认为空格。
ljust(width,fillchar=None)

>>> s='我爱python'
>>> s.ljust(12,'*')
'我爱python****'
>>> s.rjust(12,'-')
'----我爱python'

18. lstrip() & rstrip() & strip()

移除字符串左边/右边/左右两边的指定字符串,默认为空格。
当然,移除右边的字符串是反向匹配的。

>>> s='我爱python'
>>> s.rstrip('no')
'我爱pyth'

19. maketrans() & translate()

maketrans(intab,outtab,deltab)用于创建字符映射的转换表,intab表示需要转换的字符组成的字符串,outtab表示转换后的字符组成的字符串,两者须一一对应。deltab表示要删除的字符组成的字符串。
translate()根据maketrans()给出的转换表转换字符。

>>> intab='abcde'
>>> outtab='12345'
>>> deltab='xy'
>>> tran=str.maketrans(intab,outtab,deltab)
>>> s='abcde_xy_abcde'
>>> s.translate(tran)
'12345__12345'

20. partition() & rpartition()

根据指定分隔符(不能为空)从左/右将字符串进行分割,返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

>>> s
'abcde_xy_abcde'
>>> s.partition('xy')
('abcde_', 'xy', '_abcde')
>>> s.partition('xx')
('abcde_xy_abcde', '', '')
>>> s.rpartition('__')
('', '', 'abcde_xy_abcde')
>>> s.partition('')
Traceback (most recent call last):
  File "<pyshell#87>", line 1, in <module>
    s.partition('')
ValueError: empty separator

21. split() & rsplit()

也为分割函数。
str.split(str="", num=string.count(str)).

  • str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  • num -- 分割次数,默认为分隔所有。
  • 不显示分割字符。
>>> s='www. baidu. z\nz com' # 4个空字符
>>> s.split()
['www.', 'baidu.', 'z', 'z', 'com']
#参数2代表分割2次操作,后面就不分割了
>>> s.split(' ',2)
['www.', 'baidu.', 'z\nz com']
>>> s.rsplit('du')
['www. bai', '. z\nz com']

22. splitlines()

以换行为分割符进行分割,默认参数是False,True参数代表保留换行符(靠左保留)。

>>> s.splitlines()
['www. baidu. z', 'z com']
>>> s.splitlines(True)
['www. baidu. z\n', 'z com']

23. swapcase()

转换字符串中的大小写。

24. replace()

replace(old, new, count=None)

  • count : 替换次数,默认为全替换
>>> s='www.baidu.www.com'
>>> s.replace('w','m')
'mmm.baidu.mmm.com'
>>> s.replace('w','m',2)
'mmw.baidu.www.com'
>>> 

其他资料:
blog.51cto.com/cqtesting/1…
www.cnblogs.com/gouguoqilin…