为什么以下失败?
assert ascii("cat") == "cat" => False
(我想这与 Python 对字符串的比较/ASCII 函数完成后的字符串编码有关。)
为什么以下失败?
assert ascii("cat") == "cat" => False
(我想这与 Python 对字符串的比较/ASCII 函数完成后的字符串编码有关。)
那是因为的输出ascii
是这样的:
>>> ascii('cat')
"'cat'"
这显然与 just 不同'cat'
。
ascii
返回repr
字符串对象的版本,可以与字符串对象一起使用eval
或ast.literal_eval
重新生成字符串对象。
>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'
从文档:
该
str()
函数旨在返回人类可读的值的表示形式,同时repr()
旨在生成解释器可以读取的表示形式(或者SyntaxError
如果没有等效的语法,将强制执行 a )。对于没有特定人类消费表示的对象,str()
将返回与repr()
. 许多值,例如数字或结构,如列表和字典,使用任一函数具有相同的表示。尤其是字符串和浮点数,有两种不同的表示形式。