在 Python 之前的版本内,
repr()
方法会将 8-位字符串转变为 ASCII 。例如:
>>>repr(' é')
"'\\xc3\\xa9'"
现在,它会返回一个 unicode 字符串:
>>>repr(' é')
"' é'"
正如我之前提到的,这个字符串是内置的字符串类型。
字符串对象和字节对象是不兼容的。如果想要得到字节的字符串表示,需要使用它
的
decode()
方法。相反,如果想要从该字符串得到 bytes literal 表示,可以使用字符
串对象的
encode()
方法。
回页首
字符串格式化方面的变化
很多 Python 程序员都感觉用来格式化字符串的这个内置的
%
操作符太有限了, 这是因为:
它是一个二进制的操作符,最多只能接受两个参数。
除了格式化字符串参数,所有其他的参数都必须用一个元组( tuple )或是一个字典
(dictionary )进行挤压。
这种格式化多少有些不灵活, 所以 Python 3 引入了一种新的进行字符串格式化的方式 (版
本 3 保留了
%
操作符和
string.Template
模块)。字符串对象现在均具有一个方
法 format() ,此方法接受位置参数和关键字参数,二者均传递到 replacement
字段
。
Replacement 字段在字符串内由花括号(
{}
)标示。 replacement 字段内的元素被简单称
为一个 字段。以下是一个简单的例子:
>>>"I love {0}, {1}, and {2}".format("eggs", "bacon",
"sausage")
'I love eggs, bacon, and sausage'
字段 {0} 、{1} 和 {2} 通过位置参数
eggs
、
bacon
和
sausage
被传递给
format()
方
法。如下的例子显示了如何使用
format()
通过关键字参数的传递来进行格式化:
>>>"I love {a}, {b}, and {c}".format(a="eggs",
b="bacon", c="sausage")
'I love eggs, bacon, and sausage'
下面是另外一个综合了位置参数和关键字参数的例子:
>>>"I love {0}, {1}, and {param}".format("eggs",
"bacon", param="sausage")
'I love eggs, bacon, and sausage'
请记住, 在关键字参数之后放置非关键字参数是一种语法错误。 要想转义花括号, 只需使用
双倍的花括号,如下所示: