Python编程基础与科学计算
上QQ阅读APP看书,第一时间看更新

2.5.2 字符串的处理

字符串属于不可变序列,不能直接改变原字符串的内容,除非将原字符串处理成新的字符串。通过字符串提供的一些方法,可以对字符串进行处理操作。

1.字符串的连接

将两个或多个字符串连接成一个字符串,可以使用“+”符号。如果需要把数字也连接到字符串中,可以先把数字用str()函数转换成字符串,再进行字符串的连接。字符串乘以整数n,将把字符串重复n次。

采用join()方法,可以把存储到列表、元组中的字符串连接到一起,其格式为"分隔符". join(sequence),其中sequence是列表或元组。

2.字符串的分割

字符串的分割用split()方法、rsplit()方法、splitlines()方法、partition()方法和rpartition()方法,它们的功能和格式介绍如下:

  • split()格式为split(sep=None,maxsplit=-1),其中sep表示分割符号,默认为None,表示用所有空白字符(空格、换行符\n、制表位\t等)进行分割;maxsplit表示最大的分割次数,默认为-1,表示无限制次数。split()方法的返回值是由分割后的字符串构成的列表。
  • rsplit()方法从右边开始进行分割。
  • splitlines()方法将字符串用换行符\n分割成列表。
  • partition()的格式为partition(sub),在原字符串中查找sub,如果找到sub,则把sub前的字符串、sub字符串和sub后的字符串放到一个元组中,并返回这个元组;如果找不到sub,则返回的元组的第1个元素是原字符串,第2个和第3个元素是空字符串。如果原字符串中有多个sub,则以第1个先找到的字符进行分割。
  • rpartition()方法是从右边开始找sub。

3.字符串的查询与检测

字符串的查询方法有find()、rfind()、index()、rindex()、count()、startswith()和endswith(),它们的功能和格式如下:

  • find()方法的格式为find(sub[,start[,end]]),其中sub为要被检索的字符串;start和end为起始索引和终止索引,是可选的。find()方法返回首次出现sub的索引值,如果没有检索到,返回-1。
  • rfind()方法是从字符串的右侧开始查找,或者从左侧查找最后一次出现匹配字符的索引。
  • index()方法的格式与find()方法完全相同,当在原字符串中找不到要被查询的字符串时,会抛出异常,通过异常try…except处理可以进一步处理。
  • rindex()方法也是从字符串的右侧开始查找,或者从左侧查找最后一次出现匹配字符的索引。
  • count()方法的格式为count(sub[,start[,end]]),返回字符串sub在原字符中出现的次数。
  • startswith()的格式是startswith(prefix[,start[,end]]),如果原字符串以prefix开始,返回True,否则返回False。
  • endswith()的格式是endswith(suffix[,start[,end]]),如果原字符串以suffix结束,返回True,否则返回False。

Python对字符串的检测还有其他一些方法,这些方法和功能如表2-1所示。

表2-1 字符串检测方法和功能

4.字符串大小写转换

字符串大小写转换方法有swapcase()、lower()、upper()、casefold()和capitalize()。

  • swapcase()方法是将大写字符转成小写字符,小写字符转成大写字符。
  • lower()和casefold()方法是把字符串全部转成小写。
  • upper()方法是将字符串全部转成大写。
  • capitalize()方法是将首字符转成大写,其他转成小写。

5.去除字符串首尾的特殊字符

去除字符串首尾特殊字符的方法有strip()、lstrip()和rstrip()。

  • strip()方法的格式为strip(chars=None),其作用是去除字符串首尾chars字符,如“$#”,表示去除首尾的$或#符。chars的默认值是None,表示去除首尾的换行符\n、回车符\r、制表位\t和空格等空白符。
  • lstrip()方法的格式是lstrip(chars=None),表示去除字符串左侧的字符。
  • rstrip()方法的格式是rstrip(chars=None),表示去除字符串右侧的字符。

6.调整字符串的位置

可以在字符串左右两侧补充其他字符得到新的字符串,并可以调整原字符串的位置,可以使用的方法是center()、ljust()、rjust()和zfill()。

  • center()方法的格式为center(width,fillchar=''),其中width是新字符串的长度,当新字符串的长度大于原字符串的长度时,原字符串的左右两侧填充fillchar。fillchar的默认值是空格。
  • ljust()方法的格式为ljust(width,fillchar=''),其中width是新字符串的长度,当新字符串的长度大于原字符串的长度时,原字符串的右侧填充fillchar。fillchar的默认值是空格。
  • rjust()方法的格式为rjust(width,fillchar=''),其中width是新字符串的长度,当新字符串的长度大于原字符串的长度时,原字符串的左侧填充fillchar。fillchar的默认值是空格。
  • zfill()方法的格式为zfill(width),其中width是新字符串的长度,当width的值大于原字符串的长度时,在原字符串的左侧补充0。

7.字符串的替换

字符串中某些字符可以被新的字符替换,可以使用的方法是replace()、maketrans()、translate()和expandtabs()。

  • replace()方法的格式是replace(old,new,count=-1),用新字符串new替换旧字符串old,其中count表示替换次数,默认为-1,表示不受限制。
  • maketrans()方法用于产生一对映射表格(table),用于translate()方法,其格式为maketrans(string1,string2)或者maketrans(dict)。如果是两个参数,要求两个参数的长度必须一致。如果是一个参数,必须是字典型的Unicode映射关系。所谓映射关系就是一个字符代表另外一个字符,例如“abc”和“123”的映射关系是a->1(a代表1)、b->2(b代表2)、c->3(c代表3)。
  • translate()的格式是translate(table),用一个table表示的映射关系替换字符串中的字符。
  • expandtabs()的格式是expandtabs(tabsize=8),用于设置字符串中用空格代替制表转义符“\t”的长度,默认为8。

8.移除前缀或后缀

在Python 3.9.6中对字符串新添加了移除前缀和后缀的方法removeprefix(prefix)和removesuffix(suffix),返回被移除后的字符串,原字符串不变。