这是我的代码:
import os
import html
a = html.unescape("home - study")
b = "test"
print(a)
s = (a, b)
print(s)
这是我的结果:
home - study
('homexa0-xa0study', 'test')
为什么结果会这样打印?
默认情况下,打印容器(如 tuples
、lists
等(将使用其项目的repr
。(在CPython中,它被选择不实现<container>.__str__
而是让object.__str__
填补其插槽。然后,object
的__str__
将调用tuple.__repr__
然后继续调用它包含的元素的repr
。有关详细信息,请参阅 PEP 3140。
为带有转义码(如 xa0
(的字符串调用 repr
实际上不会转义它们:
print(repr(a))
'homexa0-xa0study'
要进一步验证,请尝试print(s[0])
。通过直接在位置0
提供str
对象,python将调用其__str__
并正确转义十六进制。