我正在用Beautiful Soup 3解析一些HTML,但是它包含了Beautiful Soup 3不会自动为我解码的HTML实体:

>>> from BeautifulSoup import BeautifulSoup

>>> soup = BeautifulSoup("<p>&pound;682m</p>")
>>> text = soup.find("p").string

>>> print text
&pound;682m

如何将text中的HTML实体解码为"£682m"而不是"&pound;682m".

推荐答案

Python 3.4+

使用html.unescape():

import html
print(html.unescape('&pound;682m'))

FYI html.parser.HTMLParser.unescape已弃用,was supposed to be removed in 3.5已弃用,尽管它被错误地留在了.它将很快从语言中删除.


Python 2.6-3.3

您可以使用标准库中的HTMLParser.unescape():

>>> try:
...     # Python 2.6-2.7 
...     from HTMLParser import HTMLParser
... except ImportError:
...     # Python 3
...     from html.parser import HTMLParser
... 
>>> h = HTMLParser()
>>> print(h.unescape('&pound;682m'))
£682m

您还可以使用six兼容性库简化导入:

>>> from six.moves.html_parser import HTMLParser
>>> h = HTMLParser()
>>> print(h.unescape('&pound;682m'))
£682m

Python相关问答推荐

如何使用if条件将两个scikit-learn子模型组合到一个集成中并将其保存到pickle文件?

如何列出Python脚本中使用的所有包?

如何从不同长度的HTML表格中抓取准确的字段?

将词典写入Excel

使用regex分析具有特定字符的字符串(如果它们存在)

遵循轮廓中对象方向的计算线

根据网格和相机参数渲染深度

如果条件为真,则Groupby.mean()

使用SciPy进行曲线匹配未能给出正确的匹配

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

如果值不存在,列表理解返回列表

如何在python polars中停止otherate(),当使用when()表达式时?

try 将一行连接到Tensorflow中的矩阵

在Python中动态计算范围

cv2.matchTemplate函数匹配失败

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

如何在Python中找到线性依赖mod 2

转换为浮点,pandas字符串列,混合千和十进制分隔符

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

如何在turtle中不使用write()来绘制填充字母(例如OEG)