7.1. string常见的字符串操作

源程序代码:Lib/string.py


String模块包含大量有用的常量和类,以及一些过时的遗留功能,并还可用作字符串操作。此外,Python 的内置字符串类支持的序列类型方法在序列类型 — — str,unicode,列表、 元组、 bytearray,缓冲区,xrange节所述,以及字符串方法一节中描述的特定字符串方法。要输出格式化的字符串使用模板字符串或在格式设置操作一节中描述的%运算符。基于正则表达式的字符串函数请参阅re模块。

7.1.1. 字符串常量

在此模块中定义的常数是:

string.ascii_letters

The concatenation of the ascii_lowercase and ascii_uppercase constants described below.此值不是依赖于区域设置的。

string.ascii_lowercase

小写字母'abcdefghijklmnopqrstuvwxyz'sizeof

string.ascii_uppercase

大写的字母'ABCDEFGHIJKLMNOPQRSTUVWXYZ'此值不是依赖于区域设置的并且不会改变。

string.digits

字符串'0123456789'

string.hexdigits

字符串'0123456789abcdefABCDEF'

string.letters

The concatenation of the strings lowercase and uppercase described below.特定的值依赖于区域设置,并调用locale.setlocale()时将更新。

string.lowercase

一个字符串,包含所有被认为是小写字母的字符。在大多数系统上,这是字符串'abcdefghijklmnopqrstuvwxyz'特定的值依赖于区域设置,并调用locale.setlocale()时将更新。

string.octdigits

字符串'01234567'

string.punctuation

C语言中的标点字符的 ASCII 字符的字符串。

string.printable

可打印的字符的字符串。这是一个组合的数字字母标点符号空格

string.uppercase

一个字符串,包含所有被认为是大写字母的字符。在大多数系统上,这是'ABCDEFGHIJKLMNOPQRSTUVWXYZ'的字符串。特定的值依赖于区域设置,并调用locale.setlocale()时将更新。

string.whitespace

包含的所有字符都被视为空格的字符串。在大多数系统上,这包括空格符、 制表符、 换行符、 回车符、 换页符和垂直制表符。

7.1.2. 格式化字符串

在 2.6 版本更新。

内置的 str 和 unicode 类通过在 PEP 3101 中描述的 str.format() 方法提供了复杂的变量替换和格式化值的能力。字符串模块中的格式化程序类允许您创建和自定义您自己的字符串格式设置行为作为内置format ()方法使用相同的实现。

class string.Formatter

格式化程序类具有下列的公共方法:

format(format_string, *args, **kwargs)

format ()是主要的 API 方法。它需要一个格式字符串和任意一组位置和关键字参数。 format ()只是一个对vformat()调用的封装。

vformat(format_string, args, kwargs)

此函数执行实际工作的格式。它作为一个单独的函数,为要在预定义参数的字典,而不是拆包分装这本词典使用的单个参数中传递的情况下公开* args* * 调用的语法。 vformat()没有分手格式字符串插入字符数据和置换领域的工作。它调用下面描述的各种方法。

此外,格式化程序定义大量的旨在取代由子类的方法:

parse(format_string)

对 format_string 进行循环,并返回可迭代的元组 (literal_text字段名format_spec转换)。这是由vformat()用于分解成文本或替换字段的字符串。

中元组的值在概念上表示其后更换单个字段的文本范围。如果没有文本 (有可能发生,如果两个替换领域相继发生),那么literal_text将一个零长度的字符串。如果没有置换领域,字段名format_spec转换的值将是没有

get_field(field_name, args, kwargs)

鉴于字段名返回的parse () (见上文),将其转换为对象的格式。返回一个元组 (obj,used_key)。默认版本需要在窗体中定义的字符串 PEP 3101,如"0 [名称]"或"label.title"。参数调用正传递到vformat()中。返回值used_key作为get_value()关键参数的涵义相同。

get_value(key, args, kwargs)

检索一个给定的字段值。Key参数将一个整数或字符串。如果它是一个整数,它表示在args; 位置的参数的索引如果它是一个字符串,它就表示在调用中的命名的参数。

Args参数设置为vformat(),定位参数列表和调用参数设置为关键字参数的字典。

对于复合字段名称调用这些函数只为第一个组件的字段名称 ;通过正常的属性和索引操作,随后组件进行处理。

因此,例如,字段表达式 '0.name' 会导致get_value()使用 0 key参数来调用。 Get_value()通过调用内置的getattr()函数返回后,将抬头名称属性。

如果索引或关键字引用不存在的项,则应引发IndexErrorKeyError

check_unused_args(used_args, args, kwargs)

执行检查未使用的参数,如果需要。对此函数的参数是在格式字符串 (整数位置参数) 和命名参数的字符串,并且对参数调用传递给 vformat 的引用实际上提到的所有参数键的集合。从这些参数,可以计算的未使用的参数集。 check_unused_args()被假定引发一个异常,如果检查失败。

format_field(value, format_spec)

format_field()只是简单的调用内置的全局format ()该方法提供,以便子类可以重写它。

convert_field(value, conversion)

将转换值 (经由get_field()) 给出了转换类型 (如由parse ()方法返回的元组)。默认版本理解的 ' (str),'r' (代表) 和 'a' (ascii) 类型转换。

7.1.3. 格式字符串语法

Str.format()方法和格式化程序类共享相同的格式字符串语法 (尽管在格式化程序,子类可以定义自己的格式字符串语法)。

格式字符串为花括号{}包围的替换字段。所有括号外的内容均被视作文本,不做改变复制到输出。 如果您需要在文本中包括大括号字符,它可以通过加倍逃脱了: {{}}

替换字段的语法如下所示:

replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
arg_name          ::=  [identifier | integer]
attribute_name    ::=  identifier
element_index     ::=  integer | index_string
index_string      ::=  <any source character except "]"> +
conversion        ::=  "r" | "s"
format_spec       ::=  <described in the next section>

在不那么正式的术语,置换领域可以开始与指定的对象,其值是要进行格式化并插入到的输出而不是替换字段的字段名字段名(可选) 其次是转换领域,前面有一个感叹号'!',和format_spec,这前面有一个冒号':'这些指定非默认格式的重置价值。

另请参阅格式描述迷你语言节。

字段名本身始于arg_name ,是数字或关键字。如果它是一个数字,它是指一个位置的参数,而如果它是一个关键字,它指命名的关键字参数。如果在格式字符串中的数值 arg_names 是 0,1,2,......在序列中,它们可以全部省略 (不只是一些) 和数字 0,1,2,......将自动插入顺序。因为arg_name不是引号分隔的它不是可以指定任意字典键 (例如,字符串'10'':-]') 在格式字符串中。Arg_name的后面可以由任意数量的索引或属性的表达式。表达式形式.name选择使用getattr(),而窗体'[索引]'的表达式并使用__getitem__()索引查找的命名的属性。

2.7 版本中的更改:定位参数说明符,则可以省略,所以'{} {}'相当于' {0} {1}'

一些简单的格式字符串的示例:

"First, thou shalt count to {0}" # References first positional argument
"Bring me a {}"                  # Implicitly references the first positional argument
"From {} to {}"                  # Same as "From {0} to {1}"
"My quest is {name}"             # References keyword argument 'name'
"Weight in tons {0.weight}"      # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}"  # First element of keyword argument 'players'.

转换场导致前格式类型强制。通常情况下,值进行格式设置的作业是由值本身的__format__()方法完成的。然而,在某些情况下是需要强制类型将被格式化为字符串,重写其自己定义的格式。通过在调用__format__()之前,将值转换为一个字符串,绕过正常的格式化逻辑。

目前支持两种转换标志: '! s'值,调用str()' ! r'调用repr()

一些例子:

"Harold's a clever {0!s}"        # Calls str() on the argument first
"Bring out the holy {name!r}"    # Calls repr() on the argument first

Format_spec字段包含格式如何表现的说明,包括这些细节作为字段宽度、对齐、 填充、 小数精度等方面的规范。每个值类型可以定义它自己的"格式设置迷你语言"或format_spec的解释。

大多数内置类型支持一种共同的格式设置迷你语言下, 一节所述。

Format_spec字段还可以包含嵌套的替代字段内。这些嵌套的替换字段可以包含唯一字段的名称 ;不允许转换标志和格式规范。在 format_spec 内的替换字段替换之前的format_spec字符串被解释。这将允许动态地指定的值的格式。

请参阅格式示例部分的一些例子。

7.1.3.1。格式说明符Mini-Language

"格式说明符"位于格式字符串的被置换区域中,用于定义每一个值如何显示 (请参见格式字符串语法)。它们也可以直接传递给内置的format ()函数。每个 formattable 的类型都可以定义格式描述如何被解释。

大多数内置类型都实现了以下的格式描述选项中,虽然一些格式选项只支持数值类型。

一般惯例是空格式字符串(“”)产生的结果与您对该值调用str()时的结果相同。非空格式字符串通常会修改结果。

标准格式说明符的一般形式为:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

如果指定了一个无效的对齐值,它可以以可以是任何字符和空间,如果省略默认填充字符开头。请注意它不可能会同时使用str.format()方法 ; 作为填充字符使用{} 但是这种限制并不影响format ()函数。

不同的对齐方式选项的含义如下所示:

Option Meaning
'<' Forces the field to be left-aligned within the available space (this is the default for most objects).
'>' Forces the field to be right-aligned within the available space (this is the default for numbers).
'=' Forces the padding to be placed after the sign (if any) but before the digits. This is used for printing fields in the form ‘+000000120’. This alignment option is only valid for numeric types.
'^' Forces the field to be centered within the available space.

请注意除非定义最小字段宽度,则字段宽度总是将大小相同的数据,来填满它,以便对齐选项已经没有任何意义在这种情况下。

符号选项只是有效的数字类型,并且可以将下列操作之一:

Option Meaning
'+' indicates that a sign should be used for both positive as well as negative numbers.
'-' indicates that a sign should be used only for negative numbers (this is the default behavior).
space indicates that a leading space should be used on positive numbers, and a minus sign on negative numbers.

'#'选项,有效期仅为整数,只为二进制、 八进制或十六进制输出。如果存在,它指定输出将前缀为'0b' '0o''0 x',分别。

','选项信号为数千个使用逗号分隔符。为区域设置意识到分离器,改用n的整数演示文稿类型。

2.7 版本中的更改:添加了','选项 (请参见 PEP 378)。

宽度是定义最小字段宽度的十进制整数。如果未指定,那么将由内容决定字段宽度。

由零 ('0') 字符前面宽度字段启用标志意识到零填充的数值类型。这是相当于'0''='对齐类型填充字符。

精度是指示应显示多少位数后浮动小数点点用'f''F',格式化的值或之前和之后小数点点为浮点值, 的十进制数字的格式与'g''G'对于非数字类型字段指示的最大字段大小 — — 换句话说,将从字段内容使用多少个字符。精度是不允许使用整数值。

最后,类型确定数据的显示方式。

可用字符串演示文稿类型有:

Type Meaning
's' String format. This is the default type for strings and may be omitted.
None The same as 's'.

可用整数演示文稿类型有:

Type Meaning
'b' Binary format. Outputs the number in base 2.
'c' Character. Converts the integer to the corresponding unicode character before printing.
'd' Decimal Integer. Outputs the number in base 10.
'o' Octal format. Outputs the number in base 8.
'x' Hex format. Outputs the number in base 16, using lower- case letters for the digits above 9.
'X' Hex format. Outputs the number in base 16, using upper- case letters for the digits above 9.
'n' Number. This is the same as 'd', except that it uses the current locale setting to insert the appropriate number separator characters.
None The same as 'd'.

除了上述的演示文稿类型,可以用浮动格式化整数点 (除了n和没有) 下面列出的演示文稿类型。当这样做的过程中, float()用于该整数转换为浮点数格式之前。

可用的演示文稿类型为浮点数和小数的值有:

Type Meaning
'e' Exponent notation. Prints the number in scientific notation using the letter ‘e’ to indicate the exponent. The default precision is 6.
'E' Exponent notation. Same as 'e' except it uses an upper case ‘E’ as the separator character.
'f' Fixed point. Displays the number as a fixed-point number. The default precision is 6.
'F' Fixed point. Same as 'f'.
'g'

常规格式。对于给定的精度p > = 1,这将数字四舍五入到p位数,然后设置格式结果中任一定点格式或科学记数法,根据其大小。

精确的规则如下: 假设结果格式化为演示文稿类型'e' ,且精度p 1会有指数exp然后,如果-4 < = exp < p,与演示文稿类型'f'和精度p 1 exp格式化的数字。否则,以演示文稿类型'e'和精度p 1格式化的数字。这两种情况微不足道的尾随零是从有效数,移除,并小数点是还是否跟随它没有任何剩余的数字。

正和负无穷大,积极和消极的零和 nan,格式化为inf -inf 0 -0nan(Not A Number)分别,无论精度。

一个精度为0被视为等同于一个精度为1默认精度为6

'G' General format. Same as 'g' except switches to 'E' if the number gets too large. The representations of infinity and NaN are uppercased, too.
'n' Number. This is the same as 'g', except that it uses the current locale setting to insert the appropriate number separator characters.
'%' Percentage. Multiplies the number by 100 and displays in fixed ('f') format, followed by a percent sign.
None The same as 'g'.

7.1.3.2.格式化示例

本节包含示例的新格式语法和比较与旧%-格式。

在大多数情况下的语法是类似于旧%-格式、 加{}和与使用而不是%例如,可以到'{:03.2f}'翻译'%03.2f'

新的格式语法还支持新的和不同的选项,以下示例中所示。

访问参数按位置:

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c')  # 2.7+ only
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc')      # unpacking argument sequence
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad')   # arguments' indices can be repeated
'abracadabra'

按名称访问参数:

>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: 37.24N, -115.81W'

访问这些参数的属性:

>>> c = 3-5j
>>> ('The complex number {0} is formed from the real part {0.real} '
...  'and the imaginary part {0.imag}.').format(c)
'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
>>> class Point(object):
...     def __init__(self, x, y):
...         self.x, self.y = x, y
...     def __str__(self):
...         return 'Point({self.x}, {self.y})'.format(self=self)
...
>>> str(Point(4, 2))
'Point(4, 2)'

访问参数的项:

>>> coord = (3, 5)
>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
'X: 3;  Y: 5'

替换%s%r

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"

对齐的文本和指定的宽度:

>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # use '*' as a fill char
'***********centered***********'

替换%+ f %f% f ,并指定一个标志:

>>> '{:+f}; {:+f}'.format(3.14, -3.14)  # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14)  # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)  # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'

替换%x&并将值转换为不同的基础:

>>> # format also supports binary numbers
>>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)
'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'

使用逗号作为千位分隔符:

>>> '{:,}'.format(1234567890)
'1,234,567,890'

表示的百分比:

>>> points = 19.5
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 88.64%'

使用特定于类型的格式:

>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

嵌套参数和更复杂的例子:

>>> for align, text in zip('<^>', ['left', 'center', 'right']):
...     '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]
>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
>>> int(_, 16)
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
...     for base in 'dXob':
...         print '{0:{width}{base}}'.format(num, base=base, width=width),
...     print
...
    5     5     5   101
    6     6     6   110
    7     7     7   111
    8     8    10  1000
    9     9    11  1001
   10     A    12  1010
   11     B    13  1011

7.1.4. 模板字符串

在 2.4 版本新。

模板提供了更简单的字符串替换,如中所述 PEP 292而不是正常的%-基于的换人,模板支持$-基于换人,使用以下规则:

  • $$ is an escape; it is replaced with a single $.
  • $identifier names a substitution placeholder matching a mapping key of "identifier". By default, "identifier" must spell a Python identifier. The first non-identifier character after the $ character terminates this placeholder specification.
  • ${identifier} is equivalent to $identifier. It is required when valid identifier characters follow the placeholder but are not part of the placeholder, such as "${noun}ification".

$在字符串中的任何其他外观会导致ValueError被提出。

字符串模块提供了一个模板类,实现这些规则。模板的方法是:

class string.Template(template)

构造函数采用单个参数即模板字符串。

substitute(mapping[, **kws])

执行模板替换,返回一个新字符串。映射是任何类似于字典对象与键匹配的模板中的占位符。或者,您可以提供关键字参数,这些关键字在哪里的占位符。当给出了映射kws ,重复时,从kws占位符具有更高的优先。

safe_substitute(mapping[, **kws])

喜欢substitute(),只是如果占位符是从映射kws,而不是引发KeyError异常,丢失原始占位符将出现在生成的字符串完好无损。此外,不同于与substitute(),任何其他出场的$将简单的返回美元而不是引发ValueError

虽然其他例外情况仍然可能发生,但这种方法称为"安全"因为替换总是试图返回一个可用的字符串,而不是引发异常。另一种意义上说, safe_substitute()可能是不安全,因为它默默地将忽略格式不正确的模板包含晃来晃去的分隔符,不匹配的大括号或不是有效的 Python 标识符的占位符。

模板实例还提供一个公共的数据属性:

template

这是传递给构造函数的模板参数的对象。一般情况下,你不能改变它,但不执行的只读访问权限。

这里是如何使用模板的示例:

>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'

高级用法: 您可以派生子类的模板自定义占位符语法、 分隔符字符或整个正则表达式用来解析模板字符串。若要做到这一点,可以重写这些类的属性:

  • delimiter – This is the literal string describing a placeholder introducing delimiter. The default value is $. Note that this should not be a regular expression, as the implementation will call re.escape() on this string as needed.
  • idpattern – This is the regular expression describing the pattern for non-braced placeholders (the braces will be added automatically as appropriate). The default value is the regular expression [_a-z][_a-z0-9]*.

或者,您可以通过重写类属性模式提供整个正则表达式模式。如果你这样做,值必须是一个具有四命名捕获组的正则表达式对象。捕获组对应于上面,以及无效的占位符规则给出的规则:

  • escaped – This group matches the escape sequence, e.g. $$, in the default pattern.
  • named – This group matches the unbraced placeholder name; it should not include the delimiter in capturing group.
  • braced – This group matches the brace enclosed placeholder name; it should not include either the delimiter or braces in the capturing group.
  • invalid – This group matches any other delimiter pattern (usually a single delimiter), and it should appear last in the regular expression.

7.1.5. 字符串函数

以下是可用来对字符串对象和 Unicode 对象进行操作的函数。它们不可用作字符串对象的方法。

string.capwords(s[, sep])

拆分为词使用str.split()的参数,使用str.capitalize(),每个单词首字母大写,加入使用str.join()的大写的单词。如果可选的第二个参数sep不存在或没有运行的空白字符替换由单个空格和中删除前导和尾随空白,否则sep用来分裂和加入的话。

string.maketrans(from, to)

返回转换表适于传递到translate(),将映射到位于; 中相同位置处的字符中每个字符fromto必须具有相同的长度。

不要使用作为参数,则导出从大写和小写的字符串在某些地方,这些不具有相同的长度。大小写转换为始终使用str.lower()str.upper()

7.1.6. 已弃用的字符串函数

下面的列表的功能也被定义为方法的字符串和 Unicode 对象 ;见关于那些节字符串方法的详细信息。您应该考虑这些函数为已弃用,虽然他们将不会删除直到 Python 3。在此模块中定义的功能如下:

string.atof(s)

自 2.0 版本开始,已经弃用:使用float()的内置函数。

将字符串转换为浮点数。该字符串必须有用于浮点文本在 Python 中,(可选) 前面加一个符号 (+-) 的标准语法。请注意此行为与内置函数float()当传递一个字符串相同。

当传入无效值和无穷大值,字符串,则可能会返回,具体取决于底层的 C 库。特定的字符串集接受的导致返回这些值完全取决于 C 库,已知会发生变化。

string.atoi(s[, base])

自 2.0 版本开始,已经弃用:使用int ()内置函数。

将字符串s转换为一个整数,在给定基础该字符串必须包含一个或多个数字,(可选) 前面加一个符号 (+-)。基地的默认值为 10。(后剥离标志) 根据字符串前导字符如果是 0,选择默认基地: 0x0x 16, 0意味着 8,别的意味着 10。如果基地是 16,一个领先的0x0x总是被接受,尽管不需要。这到内置函数int ()传递一个字符串时的行为相同。(还注意到: 对于数值文本更为灵活的解释,请使用内置函数eval ().)

string.atol(s[, base])

自 2.0 版本开始,已经弃用:使用long()的内置函数。

将字符串s转换为一个长整型,在给定基础该字符串必须包含一个或多个数字,(可选) 前面加一个符号 (+-)。参数的涵义对于atoi()中该词的涵义相同。尾随的l 不允许,除了如果基础为 0。请注意,当调用没有基地或与基地设置为 10,这行为与内置函数long()当传递一个字符串相同。

string.capitalize(word)

与仅其第一个字符大写返回word的一个副本。

string.expandtabs(s[, tabsize])

展开一个取而代之的由一个或多个空格,具体取决于当前的列和给定的选项卡大小的字符串中的选项卡。列号重置为零后出现在字符串中的每个换行。这并不理解,其他非打印字符或转义序列。选项卡大小默认值为 8。

string.find(s, sub[, start[, end]])

返回s中这样完全包含在s [开始: 结束]找到子字符串) 的最低的索引。失败返回-1 开始结束和负值解释的默认值是切片相同。

string.rfind(s, sub[, start[, end]])

类似find () ,但找到最高 索引。

string.index(s, sub[, start[, end]])

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

string.rindex(s, sub[, start[, end]])

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

string.count(s, sub[, start[, end]])

在字符串s [开始: 结束]返回的子串(非重叠) 出现的次数。默认设置开始结束的负值解释是切片相同。

string.lower(s)

返回的副本的s,但把大写的字母转换成小写字母。

string.split(s[, sep[, maxsplit]])

返回一个字符串s的单词列表。如果可选的第二个参数sep不存在或没有单词分隔的任意字符串的空格字符 (空间、 选项卡、 换行符、 回报、 换页符)。如果第二个参数sep对于目前并不没有的它指定要用作单词分隔符的字符串。返回的列表便会多一项非重叠出现的次数比该分隔符的字符串。如果给出了maxsplit ,顶多拆分maxsplit数发生,并且作为列表的最后一个元素返回该字符串的其余部分 (因此,列表中将有最多maxsplit + 1的元素)。如果没有指定maxsplit ,则或为-1,然后还有的分割 (所有可能分裂由) 的数量没有限制。

一个空字符串拆分的行为取决于sep的价值。如果sep不是指定,或指定为None,结果将是一个空列表。如果sep被指定为任意字符串,结果将包含一个元素,它是一个空字符串的列表。

string.rsplit(s[, sep[, maxsplit]])

返回一个字符串s,扫描s从结尾的单词列表。所有意图和目的,由此产生的单词列表是经由split (),除非当相同可选的第三个参数maxsplit是显式指定的非零。如果给出了maxsplit ,顶多拆分 — — 最右边的 — — maxsplit数发生,并且作为列表中的第一个元素返回该字符串的其余部分 (因此,列表中将有最多maxsplit + 1的元素)。

2.4 版本的新内容。

string.splitfields(s[, sep[, maxsplit]])

此函数的行为都与具有相同split ()(在过去, split ()是只使用具有一个参数,而splitfields()只用了带有两个参数。

string.join(words[, sep])

串联列表或词的sep干预次数的元组。Sep的默认值是一个空格字符。  string.join (string.split (s, sep), sep)等于s,这始终是正确的。

string.joinfields(words[, sep])

join ()时,该函数的行为相同。(在过去, join ()是只使用具有一个参数,而joinfields()只用了带有两个参数。请注意字符串对象 ; 有没有joinfields()方法请改用join ()方法。

string.lstrip(s[, chars])

返回删除前导字符的字符串的副本。如果字符被省略或空白字符是没有删除。如果给出了并不没有字符数必须是一个字符串 ;字符串中的字符将被从字符串的开头调用此方法。

2.2.3 版本中的更改:添加了字符参数。Chars参数不能通过在早期的 2.2 版本中。

string.rstrip(s[, chars])

与移除尾随字符后返回的字符串的副本。如果字符被省略或空白字符是没有删除。如果给出了并不没有字符数必须是一个字符串 ;字符串中的字符将被从字符串的末尾调用此方法。

2.2.3 版本中的更改:添加了字符参数。Chars参数不能通过在早期的 2.2 版本中。

string.strip(s[, chars])

返回删除前导和尾随字符的字符串的副本。如果字符被省略或空白字符是没有删除。如果给出了并不没有字符数必须是一个字符串 ;字符串中的字符将会去除的两端的字符串调用此方法。

2.2.3 版本中的更改:添加了字符参数。Chars参数不能通过在早期的 2.2 版本中。

string.swapcase(s)

返回的副本的s,但与小写字母转换为大写,反之亦然。

string.translate(s, table[, deletechars])

s中删除所有deletechars 参数(如果存在的话)所指定的字符,然后使用参数来翻译字符,它必须是 256 个字符的字符的都字符串给每个字符的值,按其序号编索引的翻译。如果None,则执行只有字符删除步骤。

string.upper(s)

返回的s,但与小写字母转换为大写形式的副本。

string.ljust(s, width[, fillchar])
string.rjust(s, width[, fillchar])
string.center(s, width[, fillchar])

这些函数分别左对齐、 右对齐和居中的字段中的字符串宽度。他们返回一个字符串,它至少是字符的宽度,由填充字符串s与字符fillchar (默认为空格) 直到右、 左或两侧的给定宽度。该字符串是永远不会被截断。

string.zfill(s, width)

垫在左边与零位数的数字字符串s ,直到达到给定的宽度正确处理字符串开始的标志。

string.replace(s, old, new[, maxreplace])

返回字符串s的子串取而代之的是的所有匹配项的一个副本。如果指定了可选参数maxreplace ,则替换第一个maxreplace事件。