Python : html.unescape(“&nbsp”)

A quest for html.unescape(“&nbsp”)

本问题已经有最佳答案,请猛点这里访问。

这是我的代码:

1
2
3
4
5
6
7
8
import os
import html

a = html.unescape("home - study")
b ="test"
print(a)
s = (a, b)
print(s)

这就是我的结果:

1
2
home - study
('home\xa0-\xa0study', 'test')

为什么结果会这样打印?


默认情况下,打印容器(如tupleslists等)将使用其项目的repr(在cpython中,它被选择不实现.__str__,而是让object.__str__填充其插槽。object__str__将调用tuple.__repr__,然后继续调用它所包含元素的repr。更多信息,请参见PEP 3140。)

对带有转义码的字符串(如\xa0)调用repr实际上不会转义它们:

1
2
print(repr(a))
'home\xa0-\xa0study'

要进一步验证,请尝试print(s[0])。通过直接将str对象提供到位置0中,python将调用其__str__并正确地退出十六进制。