Использование python для редактирования html, но lxml преобразует красивые объекты html в странную кодировку

Я пытаюсь использовать python (с pyquery и lxml), чтобы изменить и очистить некоторый html.

Eg. html = "<div><!-- word style><bleep><omgz 1,000 tags><--><p>It&#146;s a spicy meatball!</div>"

Функция lxml.html.clean, clean_html (), работает хорошо, за исключением того, что она заменяет красивые html-объекты, такие как

&#146; 

, на некоторую строку Unicode

\xc2\x92

Юникод выглядит странно в разных браузерах (firefox и opera с автокодированием, utf8, latin-1 и т. д.), как пустой ящик. Как я могу остановить преобразование сущностей в lxml? Как мне получить все это в кодировке latin-1? Кажется странным, что модуль, созданный специально для html, сделал бы это.

Я не могу точно сказать, какие символы там есть, поэтому я не могу просто использовать

replace("\xc2\x92","&#146;").

Я пробовал использовать

clean_html(html).encode('latin-1')

, но юникод сохраняется .

И да, я бы посоветовал людям перестать использовать слово для написания html, но тогда я бы услышал целиком

«Это мне нравится, но я не могу заставить меня измениться».

Править : решение beautifulsoup:

from BeautifulSoup import BeautifulSoup, Comment
soup = BeautifulSoup(str(desc[desc_type]))
                    comments = soup.findAll(text=lambda text:isinstance(text, Comment))
                    [comment.extract() for comment in comments]
                    print soup
10
задан s hanley 2 February 2011 в 17:00
поделиться