Поиск знака £ с lxml - PullRequest
       20

Поиск знака £ с lxml

0 голосов
/ 19 мая 2011

Я борюсь с кодировками и lxml. Я читаю в некотором html с веб-сайта и хотел бы найти тег, который включает £ в его тексте, используя lxml. Я могу выполнить поиск по тегу (h3) и получить содержимое для печати в порядке, но если я попытаюсь найти знак £ в тексте, я получу ошибку UnicodeDecodeError. Мне нужно сделать последнее, потому что это более общий случай.

tree = lxml.html.fromstring(html)

# prints #£13,999
print tree.cssselect('h3')[0].text_content().encode("utf-8")

# generates "UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)"

# prints £13,999
print tree.cssselect('h3:contains(u"\xa3")')[0].text_content().encode('utf-8')

Любой гепатит, которого вы можете предоставить, будет очень признателен ... Я пробовал несколько разных вещей, и это сводит меня с ума!

1 Ответ

0 голосов
/ 19 мая 2011

У меня нет опыта ни с python, ни с lxml, но проблема может заключаться в том, что строка 'h3' не является строкой Unicode и , что байт a3 не является кодом Unicode указать сам по себе. Вы можете попробовать заменить:

'h3:contains(u"\xa3")'

с:

u'h3:contains("\u00a3")'
...