Python конвертировать html кодированный ascii текст в utf8 - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть XML-файл, который мне нужно конвертировать в utf8. К сожалению, сущности содержат такой текст:

/mytext,

Я использую библиотеку кодеков для преобразования файлов в utf8, но HTML-сущности не будут с ней работать.

Есть ли простой способ избавиться от HTML-кодировки?

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Вы можете передать текст файла с помощью функции unescape перед передачей его в синтаксический анализатор XML.

В качестве альтернативы, если вы анализируете только HTML, lxml httpпарсер сделает это за вас:

>>> import lxml.html
>>> html = lxml.html.fromstring("<html><body><p>&#047;mytext&#044;</p></body></html>")
>>> lxml.html.tostring(html)
'<html><body><p>/mytext,</p></body></html>'
1 голос
/ 28 февраля 2012

Недавно опубликовал ниже в ответ на похожий вопрос:

import HTMLParser     # html.parser in Python 3
h = HTMLParser.HTMLParser()
h.unescape('&#047;mytext&#044;')

Технически этот метод является "внутренним" и недокументированным, но он уже давно используется в API и не отмечен лидирующейнижнее подчеркивание.

Нашел здесь ;упоминаются и другие подходы, из которых BeautifulSoup, вероятно, лучший, если не обращать внимания на его «тяжесть».

...