Как декодировать следующую строку
Я пытался декодировать следующую строку и получил ошибку.
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')
и это должно работать. Если вы не имеете в виду что-то еще под "декодированием" (возможно, вы хотите закодировать строку в какую-то конкретную кодировку).