D.Q*_*.Q. 4 html python unicode
我想将HTML实体转换回人类可读格式,例如'£''£','°''°'等.
我已经阅读了几个关于这个问题的帖子
在Python中将XML/HTML实体转换为Unicode字符串
根据他们的说法,我选择使用未记录的函数unescape(),但它对我不起作用...
我的代码示例如下:
import HTMLParser
htmlParser = HTMLParser.HTMLParser()
decoded = htmlParser.unescape('© 2013')
print decoded
Run Code Online (Sandbox Code Playgroud)
当我运行这个python脚本时,输出仍然是:
© 2013
Run Code Online (Sandbox Code Playgroud)
代替
© 2013
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 2.X,在Windows 7和Cygwin控制台上工作.我用谷歌搜索,没有发现任何类似的问题.有人可以帮我这个吗?
显然HTMLParser.unescape是一个更原始一点之前的Python 2.6.
Python 2.5:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
'©'
Run Code Online (Sandbox Code Playgroud)
Python 2.6/2.7:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape('©')
u'\xa9'
Run Code Online (Sandbox Code Playgroud)
从 python 3.9 开始使用HTMLParser()unescape(<str>)会导致错误AttributeError: 'HTMLParser' object has no attribute 'unescape'
您可以将其更新为:
import html
html.unescape(<str>)
Run Code Online (Sandbox Code Playgroud)
该网站列出了一些解决方案,这是其中之一:
\n\nfrom xml.sax.saxutils import escape, unescape\n\nhtml_escape_table = {\n \'"\': """,\n "\'": "'",\n "\xc2\xa9": "©"\n # etc...\n}\nhtml_unescape_table = {v:k for k, v in html_escape_table.items()}\n\ndef html_unescape(text):\n return unescape(text, html_unescape_table)\nRun Code Online (Sandbox Code Playgroud)\n\n但这不是最漂亮的事情,因为您必须手动列出每个转义符号。
\n\n编辑:
\n\n这个怎么样?
\n\nimport htmllib\n\ndef unescape(s):\n p = htmllib.HTMLParser(None)\n p.save_bgn()\n p.feed(s)\n return p.save_end()\nRun Code Online (Sandbox Code Playgroud)\n