在Python中将XML/HTML实体转换为Unicode字符串

77 投票
10 回答
74572 浏览
提问于 2025-04-11 09:17

我正在做一些网页抓取,很多网站常常用HTML实体来表示非ASCII字符。请问Python有没有工具可以把包含HTML实体的字符串转换成Unicode类型?

举个例子:

我得到的是:

ǎ

这个表示一个带音调符号的“ǎ”。在二进制中,它是用16位的01ce表示的。我想把这个HTML实体转换成值 u'\u01ce'

10 个回答

18

使用内置的 unichr 函数就可以了——其实不需要用到 BeautifulSoup。

>>> entity = '&#x01ce'
>>> unichr(int(entity[3:],16))
u'\u01ce'
61

标准库里的 HTMLParser 有一个没有文档说明的函数 unescape(),它的功能正如你所想的那样:

在 Python 3.4 之前:

import HTMLParser
h = HTMLParser.HTMLParser()
h.unescape('© 2010') # u'\xa9 2010'
h.unescape('© 2010') # u'\xa9 2010'

在 Python 3.4 及之后:

import html
html.unescape('© 2010') # u'\xa9 2010'
html.unescape('© 2010') # u'\xa9 2010'

撰写回答