2

为什么以下失败?

assert ascii("cat") == "cat" => False

(我想这与 Python 对字符串的比较/ASCII 函数完成后的字符串编码有关。)

4

1 回答 1

5

那是因为的输出ascii是这样的:

>>> ascii('cat')
"'cat'"

这显然与 just 不同'cat'

ascii返回repr字符串对象的版本,可以与字符串对象一起使用evalast.literal_eval重新生成字符串对象。

>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'

文档

str()函数旨在返回人类可读的值的表示形式,同时repr()旨在生成解释器可以读取的表示形式(或者 SyntaxError如果没有等效的语法,将强制执行 a )。对于没有特定人类消费表示的对象,str()将返回与repr(). 许多值,例如数字或结构,如列表和字典,使用任一函数具有相同的表示。尤其是字符串和浮点数,有两种不同的表示形式。

于 2013-07-02T06:30:45.067 回答