python 字符串方法大全

2021-01-11 10:16:24 浏览数 (1)

参考链接: Python 字符串String | isidentifier

4.7.1.字符串方法 

字符串实现所有常见的序列操作,以及下面描述的其他方法。 

字符串还支持两种类型的字符串格式化的,一个提供了很大程度的灵活性和定制(见str.format(), 格式化字符串的语法和自定义字符串格式化)和其他基于C printf风格的格式,处理范围较窄的类型,是稍硬使用正确,但对于它可以处理的情况(printf样式的字符串格式)通常更快。 

标准库的文本处理服务部分涵盖了许多其他模块,这些模块提供各种与文本相关的实用程序(包括re模块中的正则表达式支持)。 

str.capitalize() 

返回字符串的副本,其首字符大写,其余字符小写。 

str.casefold() 

返回字符串的包含案例的副本。表壳折叠字符串可用于无壳匹配。 

Casefolding类似于lowercasing但更具攻击性,因为它旨在删除字符串中的所有大小写区别。例如,德语小写字母'ß'相当于"ss"。因为它已经是小写的,所以lower()什么都不做'ß'; casefold() 将其转换为"ss"。 

案例折叠算法在Unicode标准的3.13节中描述。 

版本3.3中的新功能。 

str.center(width [,fillchar ] ) 

以长度宽度的字符串为中心返回。使用指定的fillchar完成填充(默认为ASCII空间)。如果width小于或等于,则返回原始字符串len(s)。 

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

返回[ start,end ] 范围内substring sub的非重叠出现次数。可选参数start和end被解释为切片表示法。 

str.encode(encoding =“utf-8”,errors =“strict” ) 

将字符串的编码版本作为字节对象返回。默认编码是'utf-8'。可以给出错误以设置不同的错误处理方案。错误的默认值是'strict',意味着编码错误会引发错误UnicodeError。其他可能的值'ignore','replace','xmlcharrefreplace','backslashreplace'和其他任何名义通过挂号 codecs.register_error(),见错误处理程序。有关可能的编码列表,请参阅标准编码部分。 

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

str.endswith(后缀[,开始[,结束] ] ) 

返回True字符串是否与指定的结束后缀,否则返回 False。 后缀也可以是要查找的后缀元组。通过可选的 启动,从该位置开始测试。使用可选结束,停止在该位置进行比较。 

str.expandtabs(tabsize = 8 ) 

返回字符串的副本,其中所有制表符由一个或多个空格替换,具体取决于当前列和给定的制表符大小。每个制表符字符都会出现制表符位置(默认值为8,在第0,8,16列等位置给出制表符位置)。要展开字符串,请将当前列设置为零,并逐个字符地检查字符串。如果字符是制表符(t),则在结果中插入一个或多个空格字符,直到当前列等于下一个制表符位置。(不会复制制表符本身。)如果字符是换行符(n)或返回(r),它被复制,当前列重置为零。任何其他字符都将保持不变,当前列将加1,无论打印时字符的表示方式如何。 

>>> 

>>> '01t012t0123t01234'.expandtabs()

'01      012     0123    01234'

>>> '01t012t0123t01234'.expandtabs(4)

'01  012 0123    01234'

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

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

注意 

find()只有在需要知道sub的位置时才应使用该方法。要检查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'

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

注意 

当格式化数(int,float,float 与和亚类)n类型(例如:'{:n}'.format(1234)),功能暂时设定LC_CTYPE的区域设置到LC_NUMERIC 区域解码decimal_point和thousands_sep领域 localeconv()如果它们是非ASCII或长于1个字节,而 LC_NUMERIC区域设置为比不同在LC_CTYPE语言环境。此临时更改会影响其他线程。 

在版本3.7中更改:在使用n类型格式化数字时,该函数会在某些情况下临时将LC_CTYPE语言环境设置为LC_NUMERIC语言环境。 

str.format_map(映射) 

类似于str.format(**mapping),除了mapping直接使用而不是复制到dict。如果例如mapping是一个dict子类,这很有用: 

>>> 

>>> class Default(dict):

...     def __missing__(self, key):

...         return key

...

>>> '{name} was born in {country}'.format_map(Default(name='Guido'))

'Guido was born in country'

版本3.2中的新功能。 

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

喜欢find(),但是ValueError在找不到子串时会引发。 

str.isalnum() 

如果字符串中的所有字符都是字母数字且至少有一个字符,则返回true,否则返回false。字符c是字母数字,如果下面的返回之一True:c.isalpha(),c.isdecimal(),c.isdigit(),或c.isnumeric()。 

str.isalpha() 

如果字符串中的所有字符都是字母并且至少有一个字符,则返回true,否则返回false。字母字符是在Unicode字符数据库中定义为“字母”的那些字符,即具有一般类别属性的那些字符是“Lm”,“Lt”,“Lu”,“L1”或“Lo”之一。请注意,这与Unicode标准中定义的“字母”属性不同。 

str.isascii() 

如果字符串为空或字符串中的所有字符都是ASCII,则返回true,否则返回false。ASCII字符的代码点范围为U 0000-U 007F。 

版本3.7中的新功能。 

str.isdecimal() 

如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回true,否则返回false。十进制字符是可用于在基数10中形成数字的字符,例如U 0660,ARABIC-INDIC DIGIT ZERO。正则小数字符是Unicode常规类别“Nd”中的字符。 

str.isdigit() 

如果字符串中的所有字符都是数字且至少有一个字符,则返回true,否则返回false。数字包括十进制字符和需要特殊处理的数字,例如兼容性上标数字。这包括不能用于在基数10中形成数字的数字,如Kharosthi数字。形式上,数字是具有属性值Numeric_Type = Digit或Numeric_Type = Decimal的字符。 

str.isidentifier() 

如果字符串是根据语言定义,标识符和关键字部分的有效标识符,则返回true 。 

使用keyword.iskeyword()测试保留的标识符,例如 def和class。 

str.islower() 

如果字符串中的所有外壳字符[4]都是小写且至少有一个外壳字符,则返回true,否则返回false。 

str.isnumeric() 

如果字符串中的所有字符都是数字字符,则返回true,并且至少有一个字符,否则返回false。数字字符包括数字字符,以及具有Unicode数值属性的所有字符,例如U 2155,VULGAR FRACTION ONE FIFTH。形式上,数字字符是具有属性值Numeric_Type = Digit,Numeric_Type = Decimal或Numeric_Type = Numeric的字符。 

str.isprintable() 

如果字符串中的所有字符都是可打印的或字符串为空,则返回true,否则返回false。不可打印的字符是Unicode字符数据库中定义为“其他”或“分隔符”的字符,但ASCII空间(0x20)除外,它被认为是可打印的。(请注意,此上下文中的可打印字符repr()是在字符串上调用时不应转义 的字符。它与写入sys.stdout或的字符串的处理无关sys.stderr。) 

str.isspace() 

如果字符串中只有空格字符并且至少有一个字符,则返回true,否则返回false。空白字符是Unicode字符数据库中定义为“其他”或“分隔符”的字符,以及具有双向属性的字符是“WS”,“B”或“S”之一。 

str.istitle() 

如果字符串是一个带有标题的字符串并且至少有一个字符,则返回true,例如,大写字符可能只跟随无字符的字符,而小写字符只能跟随字符。否则返回false。 

str.isupper() 

如果字符串中的所有外壳字符[4]都是大写且至少有一个外壳字符,则返回true,否则返回false。 

str.join(可迭代的) 

返回一个字符串,它是iterable中字符串的串联。TypeError如果在iterable中有任何非字符串值,包括bytes对象,则会引发 A. 元素之间的分隔符是提供此方法的字符串。 

str.ljust(width [,fillchar ] ) 

返回长度的字符串左对齐字符串宽度。使用指定的fillchar完成填充(默认为ASCII空间)。如果width小于或等于,则返回原始字符串len(s)。 

str.lower() 

返回字符串的副本,并将所有套接字符[4]转换为小写。 

所使用的小写算法在Unicode标准的3.13节中描述。 

str.lstrip([ chars ] ) 

返回删除了前导字符的字符串副本。的字符 参数是要除去的字符串指定的字符集。如果省略或None,则chars参数默认为删除空格。该字符 参数不是前缀; 相反,它的所有值组合都被剥离: 

>>> 

>>> '   spacious   '.lstrip()

'spacious   '

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

'example.com'

static str.maketrans(x [,y [,z ] ] ) 

此静态方法返回可用的转换表str.translate()。 

如果只有一个参数,则它必须是将Unicode序数(整数)或字符(长度为1的字符串)映射到Unicode序数,字符串(任意长度)或字典的字典None。然后将字符键转换为序数。 

如果有两个参数,则它们必须是长度相等的字符串,并且在结果字典中,x中的每个字符将映射到y中相同位置的字符。如果有第三个参数,则它必须是一个字符串,其字符将映射到None结果中。 

str.partition(sep ) 

在第一次出现sep时拆分字符串,并返回包含分隔符之前的部分的3元组,分隔符本身以及分隔符之后的部分。如果找不到分隔符,则返回包含字符串本身的3元组,后跟两个空字符串。 

str.replace(旧的,新的[,计数] ) 

返回字符串的副本,其中所有出现的substring old都替换为 new。如果给出可选参数计数,则仅 替换第一次计数。 

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

返回找到substring sub的字符串中的最高索引,以便包含subs[start:end]。可选参数start 和end被解释为切片表示法。-1失败时返回。 

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

喜欢rfind()但ValueError在找不到子串子时加注。 

str.rjust(width [,fillchar ] ) 

以长度宽度的字符串返回右对齐的字符串。使用指定的fillchar完成填充(默认为ASCII空间)。如果width小于或等于,则返回原始字符串len(s)。 

str.rpartition(sep ) 

在最后一次出现sep时拆分字符串,并返回包含分隔符之前的部分的3元组,分隔符本身以及分隔符之后的部分。如果找不到分隔符,则返回包含两个空字符串的3元组,后跟字符串本身。 

str.rsplit(sep = None,maxsplit = -1 ) 

使用sep作为分隔符字符串,返回字符串中单词的列表。如果给出maxsplit,则最多完成maxsplit分割,最右边 的分割。如果未指定sepNone,则任何空白字符串都是分隔符。除了从右边分裂之外,rsplit()其行为类似于 split()下面详细描述的。 

str.rstrip([ chars ] ) 

返回删除了尾随字符的字符串副本。的字符 参数是要除去的字符串指定的字符集。如果省略或None,则chars参数默认为删除空格。该字符 参数不是后缀; 相反,它的所有值组合都被剥离: 

>>> 

>>> '   spacious   '.rstrip()

'   spacious'

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

'mississ'

str.split(sep = None,maxsplit = -1 ) 

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

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

例如: 

>>> 

>>> '1,2,3'.split(',')

['1', '2', '3']

>>> '1,2,3'.split(',', maxsplit=1)

['1', '2,3']

>>> '1,2,,3,'.split(',')

['1', '2', '', '3', '']

如果未指定sep或者是None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾处不包含空字符串。因此,将空字符串或仅包含空格的字符串与None分隔符分开将返回[]。 

例如: 

>>> 

>>> '1 2 3'.split()

['1', '2', '3']

>>> '1 2 3'.split(maxsplit=1)

['1', '2 3']

>>> '   1   2   3   '.split()

['1', '2', '3']

str.splitlines([ keepends ] ) 

返回字符串中的行列表,在行边界处断开。除非给出keepends且为true,否则换行符不包括在结果列表中。 

此方法拆分以下行边界。特别是,边界是普遍换行的超集。 

表示描述n换行r回程rn回车 换行v 要么 x0b行列表f 要么 x0c换页x1c文件分隔符x1d组分隔符x1e记录分隔符x85下一行(C1控制代码)u2028线分隔符u2029段落分隔符

在版本3.2中更改:v并f添加到行边界列表中。 

例如: 

>>> 

>>> 'ab cnnde fgrklrn'.splitlines()

['ab c', '', 'de fg', 'kl']

>>> 'ab cnnde fgrklrn'.splitlines(keepends=True)

['ab cn', 'n', 'de fgr', 'klrn']

与给定split()分隔符字符串sep时不同,此方法返回空字符串的空列表,并且终止换行符不会产生额外的行: 

>>> 

>>> "".splitlines()

[]

>>> "One linen".splitlines()

['One line']

为了比较,split('n')给出: 

>>> 

>>> ''.split('n')

['']

>>> 'Two linesn'.split('n')

['Two lines', '']

str.startswith(前缀[,start [,end ] ] ) 

返回True字符串是否与开始前缀,否则返回False。 前缀也可以是要查找的前缀元组。使用可选的启动,测试字符串从该位置开始。使用可选结束,停止比较该位置的字符串。 

str.strip([ chars ] ) 

返回删除了前导和尾随字符的字符串副本。的字符参数是要除去的字符串指定的字符集。如果省略或None,则chars参数默认为删除空格。该字符参数不是前缀或后缀; 相反,它的所有值组合都被剥离: 

>>> 

>>> '   spacious   '.strip()

'spacious'

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

'example'

最外层的前导和尾随字符参数值将从字符串中删除。从前端删除字符,直到到达字符集中未包含的字符串字符。在尾端发生类似的动作。例如: 

>>> 

>>> comment_string = '#....... Section 3.2.1 Issue #32 .......'

>>> comment_string.strip('.#! ')

'Section 3.2.1 Issue #32'

str.swapcase() 

返回字符串的副本,其中大写字符转换为小写,反之亦然。请注意,它不一定是真的 。s.swapcase().swapcase() == s 

str.title() 

返回字符串的标题版本,其中单词以大写字符开头,其余字符为小写。 

例如: 

>>> 

>>> 'Hello world'.title()

'Hello World'

该算法使用简单的与语言无关的单词定义作为连续字母组。该定义在许多情况下起作用,但它意味着收缩和所有格中的撇号形成单词边界,这可能不是所期望的结果: 

>>> 

>>> "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."

str.translate(表) 

返回字符串的副本,其中每个字符已通过给定的转换表进行映射。该表必须是通过__getitem__()(通常是映射或 序列)实现索引的对象。当由Unicode序数(整数)索引时,表对象可以执行以下任何操作:返回Unicode序号或字符串,以将字符映射到一个或多个其他字符; return None,从返回字符串中删除字符; 或者引发 LookupError异常,将角色映射到自身。 

您可以使用str.maketrans()不同格式的字符到字符映射创建转换映射。 

另请参阅该codecs模块,以获得更灵活的自定义字符映射方法。 

str.upper() 

返回字符串的副本,并将所有套接字符[4]转换为大写。请注意,s.upper().isupper()可能是False如果s 包含无套管的字符或如果所得到的字符(县)的Unicode类别不是“吕氏春秋”(字母,大写),但如“LT”(字母,首字母大写)。 

使用的大写算法在Unicode标准的3.13节中描述。 

str.zfill(宽度) 

返回用ASCII '0'数字填充的字符串的副本,以生成长度为宽度的字符串。一个前置符号前缀(' '/ '-')是通过将填充处理后的符号字符,而不是之前。如果width小于或等于,则返回原始字符串len(s)。 

例如: 

>>> 

>>> "42".zfill(5)

'00042'

>>> "-42".zfill(5)

'-0042'

0 人点赞