Python Str字符串
定义
文本序列类型-Python中的str文本数据是用str对象或字符串处理的。字符串是Unicode代码点的不可变序列。字符串文字的书写方式多种多样:
- 单引号:
'allows embedded "double" quotes'
- 双引号:
"allows embedded 'single' quotes"
- 三重引号:
'''Three single quotes''', """Three double quotes"""
-
三重引号字符串可以跨多行-所有关联的空格都将包含在字符串文本中。
-
作为单个表达式的一部分并且它们之间只有空格的字符串文字将隐式转换为单个字符串文字。也就是说,(“spam”“eggs”)=“spam eggs”。
也可以使用 str 构造函数从其他对象创建字符串。
>>> str(['a', 'b', 'c', 'd'])
"['a', 'b', 'c', 'd']"
>>> tr = 'fyz is nb plus Pro Max'
>>> type(tr)
<class 'str'>
-
由于没有单独的“字符”类型,索引字符串会生成长度为 1 的字符串。也就是说,对于非空字符串 s,s[0] == s[0:1]。
-
由于也没有可变的字符串类型,但
str.join()
或io.StringIO
可用于从多个片段有效地构造字符串。
class str
(object=’’)
class str
(object=b’’, encoding=‘utf-8’, errors=‘strict’)
返回对象的字符串版本。 如果未提供对象,则返回空字符串。 否则, str() 的行为取决于是否给出了encoding
或errors
,如下所示。
如果既没有给出编码也没有给出错误,str(object)
返回object.__str__()
,它是 object
的“非正式”或可很好打印的字符串表示。 对于字符串对象,这是字符串本身。 如果 object
没有 __str__()
方法,则 str()
回退到返回 repr(object)
。
如果至少给出了编码或错误之一,则对象应该是一个类似字节的对象(例如字节或字节数组)。 在这种情况下,如果 object
是一个 bytes
(或 bytearray
)对象,那么 str(bytes, encoding, errors)
等价于 bytes.decode(encoding, errors)
。 否则,在调用bytes.decode()
之前获取缓冲区对象下的字节对象。
在没有编码或错误参数的情况下将字节对象传递给str()
属于返回非正式字符串表示的第一种情况
Str创建
str.join(iterable)
返回一个字符串,它是 iterable 中字符串的串联。 如果可迭代对象中有任何非字符串值,包括字节对象,则会引发 TypeError。 元素之间的分隔符是提供此方法的字符串。
>>> "*".join(["a", '2', "?"])
'a*2*?'
str.encode(encoding="utf-8", errors="strict")
将字符串的编码版本作为字节对象返回。 默认编码为“utf-8”
。 可能会给出错误以设置不同的错误处理方案。 错误的默认值是“严格”,这意味着编码错误会引发UnicodeError
。 其他可能的值是'ignore'
、'replace'
、'xmlcharrefreplace'
、'backslashreplace'
和通过codecs.register_error()
注册的任何其他名称,请参阅部分错误处理程序。
>>> tr.encode(encoding="utf-8", errors="strict")
b'fyz is nb plus Pro Max'
str.format(*args, **kwargs)
执行字符串格式化操作。 调用此方法的字符串可以包含由大括号{}
分隔的文字文本或替换字段。 每个替换字段包含位置参数的数字索引或关键字参数的名称。 返回字符串的副本,其中每个替换字段都替换为相应参数的字符串值。
>>> "The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'
有关可以在 format 中指定的各种格式选项的说明,请参阅[ Format String Syntax][]。
注意:当使用 n 类型(例如:'{:n}'.format(1234)
)格式化数字(int、float、complex、decimal.Decimal 和子类)时,该函数会临时将 LC_CTYPE 语言环境设置为 LC_NUMERIC 语言环境 如果localeconv()
的decimal_point
和killon_sep
字段是非ASCII 或长于1 个字节,并且LC_NUMERIC 语言环境与LC_CTYPE 语言环境不同,则解码它们。 此临时更改会影响其他线程。
在 3.7 版更改: 当用 n 类型格式化数字时,该函数在某些情况下临时将 LC_CTYPE 语言环境设置为 LC_NUMERIC 语言环境。
str.format_map(mapping)
与str.format(**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'
字符串方法
- 字符串实现了所有常见的序列操作,以及下面描述的附加方法。
字符串还支持两种样式的字符串格式,一种提供很大程度的灵活性和自定义(str.format()
、Format String Syntax
和 Custom String Formatting
),另一种基于处理更窄类型范围的 C printf 样式格式 并且更难正确使用,但对于它可以处理的情况(printf样式的字符串格式)通常更快。
标准库的文本处理服务部分涵盖了许多其他模块,这些模块提供了各种与文本相关的实用程序(包括 re 模块中的正则表达式支持)
Str拆分
str.partition(sep)
在第一次出现sep
时拆分字符串,并返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身和分隔符之后的部分。 如果未找到分隔符,则返回一个包含字符串本身的 3 元组,后跟两个空字符串。
>>> str = "fyzisnb"
>>> str.partition("is")
('fyz', 'is', 'nb')
str.rpartition(sep)
在最后一次出现 sep 时拆分字符串,并返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身和分隔符之后的部分。 如果未找到分隔符,则返回一个包含两个空字符串的 3 元组,后跟字符串本身。
split()系列
-
str.split(sep=None, maxsplit=-1)
返回字符串中单词的列表,使用sep
作为分隔符字符串。 如果给出了maxsplit
,则最多完成maxsplit
次分割(因此,列表最多有maxsplit+1
个元素)。- 如果未指定
maxsplit
或-1
,则对拆分的数量没有限制(进行所有可能的拆分)。如果给出了sep
,则连续的分隔符不会组合在一起并被视为分隔空字符串(例如,'1,,2'.split(',')
返回['1', '', '2']
)。sep
参数可能由多个字符组成(例如,'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(',') [
- 如果未指定