К вашему сведению, html.parser.HTMLParser.unescape устарел и должен был быть удален в версии 3.5, хотя был оставлен по ошибке. Скоро будет удален из языка.
Python 2.6-3.3
Вы можете использовать HTMLParser.unescape() из стандартной библиотеки:
Вы также можете использовать six библиотеку совместимости для упрощения импорта:
>>> from six.moves.html_parser import HTMLParser >>> h = HTMLParser() >>> print(h.unescape('£682m')) £682m
Ответ 2
Beautiful Soup обрабатывает преобразование сущностей. В Beautiful Soup 3 вам нужно будет указать convertEntities аргумент для BeautifulSoup конструктора (см. Раздел "Преобразование сущностей" в архивных документах). В Beautiful Soup 4 сущности декодируются автоматически.
Красивый суп 3
>>> from BeautifulSoup import BeautifulSoup >>> BeautifulSoup("<p>£682m</p>", ... convertEntities=BeautifulSoup.HTML_ENTITIES) <p>£682m</p>
Красивый суп 4
>>> from bs4 import BeautifulSoup >>> BeautifulSoup("<p>£682m</p>") <html><body><p>£682m</p></body></html>
Ответ 3
Вы можете использовать replace_entities из w3lib.html библиотека
In [202]: from w3lib.html import replace_entities
In [203]: replace_entities("£682m") Out[203]: u'\xa3682m'
In [204]: print replace_entities("£682m") £682m
Если вы передадите команду formatter=None, Beautiful Soup вообще не изменит строки при выводе. Это самый быстрый вариант, но это может привести к тому, что Beautiful Soup сгенерирует недопустимый HTML / XML, как в этих примерах.:
print(soup.prettify(formatter=None)) # <html> # <body> # <p> # Il a dit <<Sacré bleu!>> # </p> # </body> # </html>