为什么以下失败?
assert ascii("cat") == "cat" => False
(我想这与Python对字符串的比较/ ASCII函数完成后的字符串编码有关。)
答案 0 :(得分:5)
那是因为ascii
的输出是这样的:
>>> ascii('cat')
"'cat'"
明显不同于'cat'
。
ascii
返回字符串对象的repr
版本,可以与eval
或ast.literal_eval
一起使用来重新生成字符串对象。
>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'
来自docs:
str()
函数用于返回值的表示 是人类可读的,而repr()
是生成的 可由解释者阅读的表示(或将强制执行SyntaxError
如果没有等效的语法)。对于没有的对象 有一个特定的人类消费代表,str()
会 返回与repr()
相同的值。许多值,例如数字或 列表和词典之类的结构具有相同的表示形式 使用任一功能。中的字符串和浮点数 特别是,有两个不同的表示。