Python

Python 知识量:10 - 41 - 150

6.3 标准字符串函数><

测试函数- 6.3.1 -

Python字符串自带了大量有用的函数,首先了解一下测试函数。测试函数用于检测字符串是否符合特定的格式,通过返回True或False来表示结果,因此,也可以将它们称为布尔函数。

函数名 返回True的条件
s.endswith(t)
s以字符串t结尾
s.startswith(t) s以字符串t开头
s.isalnum() s只包含字母或数字
s.isalpha() s只包含字母
s.isdecimal() s只包含表示十进制数字的字符
s.isdigit() s只包含数字字符
s.isidentifier() s是合法的标识符
s.islower() s只包含小写字母
s.isnumeric() s只包含数字
s.isprintable() s只包含可打印字符
s.isspace() s只包含空白字符
s.istitle() s是个大小写符合头衔要求(title-case)的字符串
s.isupper() s只包含大写字母
t in s s包含字符串t

搜索函数- 6.3.2 -

用于在字符串中搜索子串的函数有index和find。它们的区别在于查找失败时的处理方式:

  • index函数会引发异常ValueError。

  • find函数则会返回-1,更加优雅一些。

以下是示例:

>>> s='pnotes.cn'
>>> s.find('no')
1
>>> s.index('no')
1
>>> s.find('on')
-1
>>> s.index('on')
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    s.index('on')
ValueError: substring not found

字符串搜索函数通常从左往右查找,以r开头的函数则可以从右往左查找。下面是函数清单:

函数名功能说明
s.find(t)返回t在s中的起始位置索引;没找到则返回-1。
s.rfind(t)与find功能相同,但从右往左查找。
s.index(t)与find功能相同,但如果没找到则引发ValueError异常。
s.rindex(t)与index功能相同,但从右往左查找。

总之,find和index函数会返回子串第一次出现时的起始位置索引,而rfind和rindex函数返回子串最后一次出现时的起始位置索引。

大小写转换函数- 6.3.3 -

Python提供了许多可以转换字母大小写的函数。但需要注意的是:字符串没有真的被修改,实际上,Python总是创建一个满足要求的新字符串。

函数名功能说明
s.capitalize()将s[0]即首字母改为大写。
s.lower()让s所有字母都变为小写。
s.upper()让s所有字母都变为大写。
s.swapcase()将小写字母改为大写,并将大写字母改为小写。
s.title()让s的大小写格式符合头衔要求(title-case)。

格式化函数- 6.3.4 -

设置格式的函数可以美化字符串,使字符串看上去更优雅。以下是一些常用的函数:

函数名功能说明
s.center(n,ch)设置字符串长度为n,s位于中央,两边用字符ch填充。
s.ljust(n,ch)设置字符串长度为n,s位于左边,右边用字符ch填充。
s.rjust(n,ch)设置字符串长度为n,s位于右边,左边用字符ch填充。
s.format(vars)功能强大的格式化函数,通过设置参数对s进行格式化。

format()函数功能强大,甚至可以使用设置字符串格式的微型语言。使用format()函数时,需要向其提供参数,即变量或值。下面是一些基本的用法:

1、位置替换

>>> '{} likes {} and {}'.format('Jeff','bananas','apples')
'Jeff likes bananas and apples'

2、编号替换

>>> '{0} likes {2} and {1}'.format('Jeff','apples','bananas')
'Jeff likes bananas and apples'

3、关键字替换

>>> '{who} likes {what}'.format(what='cars',who='John')
'John likes cars'

除了以上用法,format()函数还可以用来指定字符串的间距和对齐方式,对数字进制进行转换和格式化等等。

剥除函数- 6.3.5 -

剥除函数用于删除字符串开头或末尾指定的字符。默认删除空白字符;如果指定了参数,将在原字符串中删除该参数包含的所有字符。常用的剥除函数如下:

函数名功能说明
s.strip(ch)从s的开头和末尾删除所有包含在字符串ch中的字符。
s.lstrip(ch)从s的开头(左侧)删除所有包含在字符串ch中的字符。
s.rstrip(ch)从s的末尾(右侧)删除所有包含在字符串ch中的字符。

下面是一些简单的应用示例:

1、默认情况:

>>> s='  I love my hometown!!!  '
>>> s
'  I love my hometown!!!  '
>>> s.lstrip()
'I love my hometown!!!  '
>>> s.rstrip()
'  I love my hometown!!!'
>>> s.strip()
'I love my hometown!!!'

2、指定剥除字符:

>>> s='!@# I love my hometown #@!'
>>> s
'!@# I love my hometown #@!'
>>> s.strip('!')
'@# I love my hometown #@'
>>> s.strip('!@')
'# I love my hometown #'
>>> s.strip('!@# ')
'I love my hometown'
>>> s.strip('@# ')              #无效的设置
'!@# I love my hometown #@!'    #剥除失败

注意:剥除函数只能删除字符串开头或结尾的字符,不能删除中间部分的字符。指定参数时也需要从第一个字符开始,不能跳过前面的字符,否则就是无效的设置。

拆分函数- 6.3.6 -

拆分函数用于将字符串分成多个子串。下面是常用的拆分函数:

函数名功能说明
s.partition(t)将s拆分为3个字符串(head、t、tail),其中,head为t前面的子串,tail为t后面的子串。
s.rpartition(t)与partition(t)相同,但从s的右侧开始搜索t。
s.split(t)以t为分隔符,将s分成一系列子串,并返回一个由这些子串组成的列表。
s.rsplit(t)与split(t)相同,但从s的右侧开始搜索t。
s.splitlines()返回一个由s中的各行组成的列表。

下面是一些简单的应用示例:

>>> url='www.pnotes.cn'
>>> url
'www.pnotes.cn'
>>> url.partition('.')
('www', '.', 'pnotes.cn')
>>> url.rpartition('.')
('www.pnotes', '.', 'cn')

partition()函数和rpartition()函数的返回值都形如“head,t,tail”,这种返回值称为元组。

>>> url.split('.')
['www', 'pnotes', 'cn']
>>> url.rsplit('.')
['www', 'pnotes', 'cn']

split()函数和rsplit()函数总是返回一个字符串列表。列表以“[”开头,以“]”结尾,并用逗号分隔每个元素,这是Python列表的显著特征。

如果不指定split()函数或rsplit()函数的参数,默认将以空格为分隔符。

>>> s='I like www.pnotes.cn'
>>> s.split()
['I', 'like', 'www.pnotes.cn']

splitlines()函数对字符串以行进行分隔,具体用法如下:

>>> s="""I
like
www.pnotes.cn"""
>>> s
'I\nlike\nwww.pnotes.cn'
>>> s.splitlines()
['I', 'like', 'www.pnotes.cn']

替换函数- 6.3.7 -

替换函数可以将字符串中的指定子串替换为新子串,也可以用于删除指定子串。以下是常用的替换函数:

函数名功能说明
s.replace(old,new)将s中的每个old替换为new。
s.expandtabs(n)将s中的每个制表符替换为n个空格。

下面是替换函数的示例:

>>> s='go,go,come on!'
>>> s
'go,go,come on!'
>>> s.replace('go','hurry up')
'hurry up,hurry up,come on!'
>>> s
'go,go,come on!'
>>> s.replace('go','')
',,come on!'

从以上代码可以看出,使用替换函数后,将自动返回替换后的字符串,但是原字符串s没有实际改变。

其他函数- 6.3.8 -

Python拥有非常多的函数,不能一一列举,其他常用的函数如下:

函数名功能说明
s.count(t)t在s中出现的次数。
s.encode()
设置s的编码。
s.join(part)使用s将part中的字符串连接成一个字符串。
s.maketrans(old,new)创建一个转换表,将old中的字符修改为new中的字符。
s.translate(table)使用maketrans函数创建的转换表对s中的字符进行替换。
s.zfill(width)在s的左边添加足够多个0,让字符串长度等于width。

下面是应用示例:

>>> s='hello pnotes.'
>>> s.count('e')
2
>>> ' '.join(['I','like','apple'])
'I like apple'
>>> '&'.join(['I','like','apple'])
'I&like&apple'
>>> ''.join(['I','like','apple'])
'Ilikeapple'
>>> t=''.maketrans('aple','1234')
>>> 'I like apple'.translate(t)
'I 3ik4 12234'
>>> '50'.zfill(5)
'00050'