参考链接: 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'