Как декодировать следующую строку

Я пытался декодировать следующую строку и получил ошибку.

item = lh.fromstring(items[1].text).text_content().strip().decode('utf-8')

File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)

UnicodeEncodeError: 'ascii' codec can't encode character u'\u20a8' in position 0: ordinal not in range(128)

Есть идеи, что не так?

items[1].text = <strong>₨ 18,500 </strong> 
repr(items[1].text) = u'\u20a8 18,500'

2 ответа

Решение

Тот факт, что вы позвонили decode но ваша ошибка цитирует encode является подсказкой, что ваша строка - это Unicode, а не строка байтов. decode для преобразования из байтовых строк в Unicode, encode для наоборот.

Кажется, вы пытаетесь декодировать уже декодированную (Unicode) строку. Итак, капля .decode('utf-8') и это должно работать. Если вы не имеете в виду что-то еще под "декодированием" (возможно, вы хотите закодировать строку в какую-то конкретную кодировку).

Другие вопросы по тегам