Python字符串的方法

如下所列的字符串方法8位字符串和Unicode对象都支持。它们中有些还可用于字节数组对象上。

此外,Python的字符串支持在序列类型 —  str、unicode、list、 tuple、 bytearray、buffer、xrange一节中所述的序列类型方法。要输出格式化的字符串请使用模板字符串或字符串格式化操作一节中描述的%运算符。另外,对于基于正则表达式的字符串函数请参阅re模块。

str.capitalize()

返回字符串的副本,该副本第一个字符大写,其余字符小写。

对于8比特字符串,此方法是依赖于区域设置的。

str.center(width[, fillchar])

返回长度为width的字符串,并使得自身居中。使用指定的fillchar(默认为一个空格)做填充。

2.4 版本中的更改:fillchar参数的支持。

str.count(sub[, start[, end]])

返回在[start, end]范围内的子串sub非重叠出现的次数。可选参数startend都以切片表示法解释。

str.decode([encoding[, errors]])

使用 encoding 中注册的编解码器,对字符串进行解码。encoding默认为字符串的默认编码。可以给出errors以设置不同的错误处理方案。默认值是'strict',意思是编码错误引发UnicodeError其它可能的值有'ignore''replace'和任何其它通过codecs.register_error()注册的名称,请参阅编解码器基类

版本2.2中新增。

版本2.3中的更改:添加对于其它错误处理方案的支持。

2.7版本中的更改:添加对关键字参数的支持。

str.encode([encoding[, errors]])

返回该字符串编码后的版本。默认编码是当前默认字符串编码。可以给出errors以设置不同的错误处理方案。errors的默认值是'strict',意思编码错误引发一个UnicodeError其它可能的值有'ignore' 'replace''xmlcharrefreplace''backslashreplace'和通过codecs.register_error()注册的任何其它名称,请参阅编解码器基类可能的编码列表,请参阅标准编码部分。

版本 2.0 新增。

版本2.3中的更改:添加支持 'xmlcharrefreplace''backslashreplace'并添加其它错误处理方案。

2.7版中的更改:添加对关键字参数的支持。

str.endswith(suffix[, start[, end]])

如果字符串以指定的suffix结尾则返回True,否则返回Falsesuffix也可以是一个元组。可选的start表示从该位置开始测试。可选的end表示在该位置停止比较。

2.5 版本中的更改:接受元组作为suffix

str.expandtabs([tabsize])

返回一个字符串的副本,其中所有制表符由一个或多个空格替换,具体取决于当前列和给定的制表符大小。制表位位置发生每tabsize字符 (默认值为 8,给制表位位置在列 0,8,16,等等)。若要展开的字符串,当前的列被设置为零并检查字符串的字符。如果字符是一个选项卡 ( ),直到当前列等于下一个选项卡位置在结果中插入一个或多个空格字符。(制表符字符本身则不复制)。如果字符是换行符 ( ) 或返回 ( ),它复制,而且当前的列重置为零。任何其他字符被复制不变并且当前列递增一无论打印时字符的表示方式。

 

>>> '01t012t0123t01234'.expandtabs()
'01      012     0123    01234'
>>> '01t012t0123t01234'.expandtabs(4)
'01  012 0123    01234'

str.find(sub[, start[, end]])

返回在字符串中找到的子字符串sub的最低索引,使得sub包含在切片s[start:end]中。可选参数startend作为切片表示法解释。如果未找到sub,则返回-1

只有当你需要知道sub的位置时才应使用find()方法。若要检查sub是否一个子字符串,请使用in运算符:

 

>>> 'Py' in 'Python'
True

str.format(*args, **kwargs)

执行字符串格式化操作。调用此方法的字符串可以包含文本字面值或由花括号{}分隔的替换字段。每个替换字段包含位置参数的数字索引或关键字参数的名称。返回字符串的一个拷贝,其中每个替换字段使用对应参数的字符串值替换。

 

>>> "The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'

关于在格式字符串中可以指定的各种格式化选项的说明,请参阅格式字符串语法

这种字符串格式化的方法是Python 3中的新标准,在新代码中应该比字符串格式化操作所述的%格式化优先考虑。

在2.6版中新增。

str.index(sub[, start[, end]])

类似find(),但未找到子字符串时引发ValueError

str.isalnum()

如果字符串中的所有字符都是数字或者字母,并且至少有一个字符,则返回true,否则返回false。

对于 8 位字符串,此方法是依赖于区域设置的。

str.isalpha()

字符串至少有一个字符并且都是字母,则返回true,否则返回false。

对于 8 位字符串,此方法是依赖于区域设置的。

str.isdigit()

如果在字符串中的所有字符都是数字并且至少一个字符,则返回 true。否则返回false。

对于 8 位字符串,此方法是依赖于区域设置的。

str.islower()

如果在字符串中的所有套管井的字符[4]都小写,还有套管井的至少一个字符虚假否则返回 true。

对于 8 位字符串,此方法是依赖于区域设置的。

str.isspace()

如果有只有空白字符在字符串中,否则还有虚假的至少一个字符,则返回 true。

对于 8 位字符串,此方法是依赖于区域设置的。

str.istitle()

如果字符串是标题类型的字符串且至少包含一个字符,则返回 true。例如:大写字符可能只能跟着非标题类(数字、符号和转义字符)的字符和小写字符。 否则返回 false。

对于 8 位字符串,此方法是依赖于区域设置的。

str.isupper()

如果所有嵌套中的字符[4]在字符串中都大写,并且嵌套中的至少一个字符,则返回 true;否则返回false。

对于 8 位字符串,此方法是依赖于区域设置的。

str.join(iterable)

返回一个字符串,为iterable可迭代对象中字符串的连接。元素之间的分隔符是提供该方法的字符串。

str.ljust(width[, fillchar])

返回字符串的长度宽度中左对齐一个字符串。做了填充使用指定的fillchar (默认为一个空格)。如果width小于或等于len(s)则返回原始字符串。

2.4 版本中的更改:Fillchar参数的支持。

str.lower()

返回转换为小写字符串的所有套管井的字符[4]的副本。

对于 8 位字符串,此方法是依赖于区域设置的。

str.lstrip([chars])

返回删除前导字符的字符串的副本。Chars参数是一个字符串,指定要移除的字符集。如果省略或没有 chars参数默认为删除空格。Chars参数不是一个前缀 ;相反,被剥夺了其值的所有组合:

 

>>> '   spacious   '.lstrip()
'spacious   '
>>> 'www.example.com'.lstrip('cmowz.')
'example.com'

2.2.2 版本中的更改:Chars参数的支持。

str.partition(sep)

分隔符首次出现位置拆分字符串,并返回包含分隔符之前部分、分隔符本身和分隔符之后部分的3元组。如果找不到分隔符,返回包含字符串本身,跟着两个空字符串的 3 元组。

新版本 2.5 中的。

str.replace(old, new[, count])

返回字符串的一个拷贝,其中所有的子串old通过new替换。如果指定了可选参数count,则只有前面的count个出现被替换。

str.rfind(sub[, start[, end]])

返回被搜索子串最后一次出现在字符串的索引位置, 字符串被搜索范围为[start:end]可选参数,开始结束都是解释为以切片表示法。失败返回-1

str.rindex(sub[, start[, end]])

类似rfind() ,但未找到子字符串时引发ValueError

str.rjust(width[, fillchar])

返回字符串的长度宽度中右对齐的字符串。做了填充使用指定的fillchar (默认为一个空格)。返回原始字符串宽度是否小于或等于len(s)

2.4 版本中的更改:Fillchar参数的支持。

str.rpartition(sep)

拆分 ( sep),最后一个匹配项的字符串,并返回包含分隔符,分隔符本身和部分之前的部分在分隔符之后的 3 元组。如果找不到分隔符,返回包含两个空字符串,后面跟有字符串本身的 3 元组。

新版本 2.5 中的。

str.rsplit([sep[, maxsplit]])

在字符串中,使用sep作为分隔符字符串返回一个单词列表。如果给出了maxsplit ,顶多分裂为maxsplit+1个元素,从最右边开始。如果未指定sep没有任何空格的字符串是一个分隔符。除了从右边分裂, rsplit()split ()在下面详细描述。

在 2.4 版本新。

str.rstrip([chars])

与移除尾随字符后返回的字符串的副本。Chars参数是一个字符串,指定要移除的字符集。如果省略或没有 chars参数默认为删除空格。Chars参数不是一个后缀 ;相反,被剥夺了其值的所有组合:

 

>>> '   spacious   '.rstrip()
'   spacious'
>>> 'mississippi'.rstrip('ipz')
'mississ'

2.2.2 版本中的更改:Chars参数的支持。

str.split([sep[, maxsplit]])

返回字符串中的单词列表,使用sep作为分隔符字符串。如果给出maxsplit,则至多拆分maxsplit次(因此,列表中将最多有maxsplit+1个元素)。如果没有指定maxsplit或为-1,那么分割的数量没有限制(进行所有可能的分割)。

如果给定了sep,连续的分隔符不分组在一起,并被视为空字符串进行分隔(例如,'1,,2'.split(',')返回['1', '', '2'])。sep参数可以由多个字符组成(例如,‘1<>2<>3'.split('<>')返回['1', '2', '3'])。用指定的分隔符分隔空字符串返回['']

如果sep未指定或者为None,则采用一种不同的分隔算法:连续的空格被视为一个单一的分隔符,结果的开始或结尾将不包含空字符串即使该字符串有前导或尾随空白。因此,使用None分隔一个空字符串或只包含空白的字符串返回[]

例如,1  2   3  '.split()返回['1', '2', '3']1  2   3  '.split (None, 1)返回['1', '2    3   ']

str.splitlines([keepends])

返回字符串中行组成的列表,在行的边界截断。此方法使用通用换行符方法分隔行。换行符不包含在结果列表中,除非给定keepends给定且为真。

例如, ' ab c de fg kl'.splitlines()返回['ab c', ', 'de fg', 'kl'],而与splitlines(True)相同的调用返回['ab c ', ' ', ' de fg', ' kl'].

与给出分隔符字符串sepsplit()不同,该方法为空字符串返回一个空的列表,最终的换行符不会导致额外的一行。

str.startswith(prefix[, start[, end]])

如果字符串以prefix开头则返回True,否则返回Falseprefix也可以是一个需要查找的前缀元组。可选的start表示从该位置开始测试字符串。可选的end表示在该位置停止字符串比较。

2.5 版本中的更改:接受元组作为prefix

str.strip([chars])

返回字符串的一个副本,删除前导和尾随字符。chars参数是一个字符串,指定要移除的字符集。如果省略或为None,则chars参数默认为删除空白字符。chars参数不是一个前缀或后缀;而是删除其值的所有组合:

 

>>> '   spacious   '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'

2.2.2 版本中的更改:支持chars参数。

str.swapcase()

返回字符串的一个拷贝,其中大写字符转换为小写,小写字符转换为大写。

对于8比特字符串,此方法依赖于区域设置。

str.title()

返回字符串首字母大写的一个版本,所有单词以大写字母开始,剩下的字母都是小写。

该算法使用一个简单的独立于具体语言的定义,将连续的一组字母定义为一个单词。该定义在很多情况下可以工作,但也意味着在缩略和所有格构成词的边界中,这可能不是预期的结果:

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"

可以使用正则表达式为撇号构造一种变通方法:

 

>>> import re
>>> def titlecase(s):
...     return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
...                   lambda mo: mo.group(0)[0].upper() +
...                              mo.group(0)[1:].lower(),
...                   s)
...
>>> titlecase("they're bill's friends.")
"They're Bill's Friends."

对于8比特字符串,此方法依赖于区域设置。

str.translate(table[, deletechars])

返回字符串的一个拷贝,其中出现在可选参数deletechars中的所有字符被删除,其余的字符通过给定的转换表映射,转换表必须是长度为256的一个字符串。

你可以使用string模块中的maketrans()帮助函数创建一个转换表。对于字符串对象,如果转换只是删除字符,可以设置table参数为None

>>> 'read this short text'.translate(None, 'aeiou')
'rd ths shrt txt'

在2.6版本中新增:Support for a None table argument.

对于Unicode对象,translate()方法不接受可选的deletechars参数。相反,它将返回s的一个拷贝,其中所有的字符通过给定的转换表映射,转换表必须是Unicode序数到Unicode序数、Unicode字符串或None的一个映射。未映射的字符保持原封不动。映射到None的字符被删除。注意,更灵活的方法是使用编解码器模块创建自定义的字符映射(见encodings.cp1251为例)。

str.upper()

返回字符串的一个拷贝,其中所有大小写有区别的字符[4]转换为大写。注意,str.upper().isupper()可能为False如果s不包含大小写有区别的字符或生成的字符的Unicode类别不是"Lu"(大写字母)而是"Lt"(首字母大写)。

对于8比特字符串,此方法依赖于区域设置。

str.zfill(width)

在数值字符串的左边填充零至长度为width符号前缀将正确处理。如果width小于或等于len(s)则返回原始字符串。

版本2.2.2中新增。

下列方法只有Unicode对象具有:

unicode.isnumeric()

如果S中只有数值字符则返回True,否则返回False数值字符包括数字字符和具有数值属性的Unicode,例如U+2155表示分数五分之一。

unicode.isdecimal()

如果S中只有十进制字符,则返回True,否则返回False十进制字符包括数字字符和所有可用于构成十进制基数数字的字符,例如U+0660表示阿拉伯-印度文数字的零。

如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!

发表评论