Python 文字列内の HTML エンティティをデコードしますか? 質問する

Python 文字列内の HTML エンティティをデコードしますか? 質問する

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

の HTML エンティティを の代わりtextに にデコードするにはどうすればよいですか。"£682m""&pound;682m"

ベストアンサー1

Python 3.4以上

使用html.unescape():

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

FYIhtml.parser.HTMLParser.unescapeは非推奨であり、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

おすすめ記事