TypeError: декодирование Unicode не поддерживается python

Я использую lxml.html для анализа html-файла и получения текста со страницы. Но теперь у меня есть строка с символом ', например Florian's, из-за которой при печати вывода я получаю трассировку

parent_link_id_text =  parent_link_id.xpath('./td[@width="400"]/text()')
print (SGS_Mid[0]+";"+"External"+";"+str(link_id_num[0])+";"+parent_link_id_text[0]+";"+parent_link_link[0], file = log_file_1)

UnicodeEncodeError: кодек ascii не может кодировать символы в позиции 56-58: порядковый номер не в диапазоне (128)

Затем я попробовал это

print (SGS_Mid[0]+";"+"PublicFreeUrl"+";"+str(link_id_num[0])+";"+unicode(parent_link_id_text[0],"utf-8")+";"+parent_link_link[0], file = log_file_1)

и я получаю трассировку:

TypeError: декодирование Unicode не поддерживается

Как я могу решить эту проблему, напечатав строку с символом юникода?


person Sangamesh Hs    schedule 17.07.2013    source источник


Ответы (1)


Не уверен, что это решение вашей проблемы, но, возможно, оно направит вас в правильном направлении.

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

См. следующий код:

import lxml.html as lh
import urllib2

url = 'http://loremipsum.net/about.html'

doc = lh.parse(urllib2.urlopen(url))

value = doc.xpath('//p/strong/text()')[0]

print value

Распечатанный результат:

Что такое «лорем ипсум»?

Прочитав страницу about на сайте lorem ipsum, вы увидите, что возвращенный текст действительно содержит '.

Я надеюсь, что это поможет вам в правильном направлении.

person CodeLikeBeaker    schedule 22.10.2013