我想将HTML实体转换回人类可读格式,例如'£'
到'£','°'
到'°'等。
我已经阅读了几个关于这个问题的帖子
Converting html source content into readable format with Python 2.x
Decode HTML entities in Python string?
Convert XML/HTML Entities into Unicode String in Python
根据他们的说法,我选择使用未记录的函数unescape(),但它对我不起作用......
我的代码示例如下:
import HTMLParser
htmlParser = HTMLParser.HTMLParser()
decoded = htmlParser.unescape('© 2013')
print decoded
当我运行这个python脚本时,输出仍然是:
© 2013
而不是
© 2013
我正在使用Python 2.X,在Windows 7和Cygwin控制台上工作。我用谷歌搜索,没有发现任何类似的问题。有人可以帮我这个吗?
答案 0 :(得分:6)
显然HTMLParser.unescape
在bit more primitive之前是Python 2.6。
Python 2.5:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
'©'
Python 2.6 / 2.7:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
u'\xa9'
请参阅2.5 implementation与2.6 implementation / 2.7 implementation
答案 1 :(得分:1)
This site列出了一些解决方案,其中一个是:
from xml.sax.saxutils import escape, unescape
html_escape_table = {
'"': """,
"'": "'",
"©": "©"
# etc...
}
html_unescape_table = {v:k for k, v in html_escape_table.items()}
def html_unescape(text):
return unescape(text, html_unescape_table)
不是最漂亮的事情,因为您必须手动列出每个转义符号。
编辑:
这个怎么样?
import htmllib
def unescape(s):
p = htmllib.HTMLParser(None)
p.save_bgn()
p.feed(s)
return p.save_end()