Python 知识量:10 - 41 - 150
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 |
用于在字符串中搜索子串的函数有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函数返回子串最后一次出现时的起始位置索引。
Python提供了许多可以转换字母大小写的函数。但需要注意的是:字符串没有真的被修改,实际上,Python总是创建一个满足要求的新字符串。
函数名 | 功能说明 |
---|---|
s.capitalize() | 将s[0]即首字母改为大写。 |
s.lower() | 让s所有字母都变为小写。 |
s.upper() | 让s所有字母都变为大写。 |
s.swapcase() | 将小写字母改为大写,并将大写字母改为小写。 |
s.title() | 让s的大小写格式符合头衔要求(title-case)。 |
设置格式的函数可以美化字符串,使字符串看上去更优雅。以下是一些常用的函数:
函数名 | 功能说明 |
---|---|
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()函数还可以用来指定字符串的间距和对齐方式,对数字进制进行转换和格式化等等。
剥除函数用于删除字符串开头或末尾指定的字符。默认删除空白字符;如果指定了参数,将在原字符串中删除该参数包含的所有字符。常用的剥除函数如下:
函数名 | 功能说明 |
---|---|
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 #@!' #剥除失败
注意:剥除函数只能删除字符串开头或结尾的字符,不能删除中间部分的字符。指定参数时也需要从第一个字符开始,不能跳过前面的字符,否则就是无效的设置。
拆分函数用于将字符串分成多个子串。下面是常用的拆分函数:
函数名 | 功能说明 |
---|---|
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']
替换函数可以将字符串中的指定子串替换为新子串,也可以用于删除指定子串。以下是常用的替换函数:
函数名 | 功能说明 |
---|---|
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没有实际改变。
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'
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6