在 Python 中处理文本数据是使用 str
对象,也称为 字符串。 字符串是由 Unicode 码位构成的不可变 序列。 字符串字面值有多种不同的写法:
单引号:
'允许包含有 "双" 引号'
双引号:
"允许嵌入 '单' 引号"
三重引号:
'''三重单引号'''
,"""三重双引号"""
使用三重引号的字符串可以跨越多行 —— 其中所有的空白字符都将包含在该字符串字面值中。
作为单一表达式组成部分,之间只由空格分隔的多个字符串字面值会被隐式地转换为单个字符串字面值。 也就是说,("spam " "eggs") == "spam eggs"
。
请参阅 字符串与字节串字面值 了解有关不同字符串字面值的更多信息,包括所支持的转义序列,以及使用 r
("raw") 前缀来禁用大多数转义序列的处理。
字符串也可以通过使用 str
构造器从其他对象创建。
由于不存在单独的“字符”类型,对字符串做索引操作将产生一个长度为 1 的字符串。 也就是说,对于一个非空字符串 s, s[0] == s[0:1]
。
不存在可变的字符串类型,但是 str.join()
或 io.StringIO
可以被被用来根据多个片段高效率地构建字符串。
在 3.3 版更改: 为了与 Python 2 系列的向下兼容,再次允许字符串字面值使用 u
前缀。 它对字符串字面值的含义没有影响,并且不能与 r
前缀同时出现。
class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
返回 object 的 字符串 版本。 如果未提供 object 则返回空字符串。 在其他情况下
str()
的行为取决于 encoding 或 errors 是否有给出,具体见下。如果 encoding 或 errors 均未给出,则
str(object)
返回type(object).__str__(object)
,这是 object 的 "非正式" 或格式良好的字符串表示形式。 对于字符串对象,这是该字符串本身。 如果 object 没有__str__()
方法,则str()
将回退为返回repr(object)
。如果 encoding 或 errors 至少给出其中之一,则 object 应该是一个 bytes-like object (例如
bytes
或bytearray
)。 在此情况下,如果 object 是一个bytes
(或bytearray
) 对象,则str(bytes, encoding, errors)
等价于bytes.decode(encoding, errors)
。 否则的话,会在调用bytes.decode()
之前获取缓冲区对象下层的 bytes 对象。 请参阅 二进制序列类型 --- bytes, bytearray, memoryview 与 缓冲协议 了解有关缓冲区对象的信息。将一个
bytes
对象传入str()
而不给出 encoding 或 errors 参数的操作属于第一种情况, 将返回非正式的字符串表示(另请参阅 Python 的-b
命令行选项)。 例如: