Посоветуйте PLZ как декодировать строку содержащую коды unicode?
x= ‘\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435’
print x.?(“utf-8”)
Piton23А конкретнее?
encode()/decode()
x= '\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435'
print x.encode("utf-8")
print x.decode("utf-8")
>>>
\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435
\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435
>>> x= '\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435'
>>> x
'\\u0418\\u0433\\u0440\\u0430 \\u043d\\u0430 \\u0432\\u044b\\u0436\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435'
>>> x.decode('unicode-escape')
u'\u0418\u0433\u0440\u0430 \u043d\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435'
>>> print x.decode('unicode-escape')
Игра на выживание
>>>
Piton23Строка в utf8 - это уже *последовательность байтов*. Это такая последовательность байтов, которую можно декодировать в символы юникода (в буквы, в текст) с помощью кодировки (==алгоритма) utf8.
так то если строка в utf-8 и надо превратить в последовательность байтов (внутренняя структура питона вроде unicode) то нужно decode('utf')
Piton23Из последовательности байт в строку в кодировке cp1251 (т.е. другую последовательность байт) нельзя получить, не зная кодировку исходной последовательности байт. Например, если нужно переконвертировать utf8-строку в 1251-строку, мы сначала декодируем utf8 в юникод, а потом кодируем юникод в 1251.
если из последовательности байт в строку с кодировкой cp1251 то encode('cp1251')
kmikeСпасибо! Все заработало :) Взялась с белорусского медиа портала - API у них такое.
Это строка не в utf8, а в кодировке unicode-escape (откуда она такая взялась, кстати?)
\\u0410\\u043b\\u0435\\u043a\\u0441\\u0430\\u043d\\u0434\\u0440
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x='\\u0410\\u043b\\u0435\\u043a\\u0441\\u0430\\u043d\\u0434\\u0440'
>>> print x.decode('unicode-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-8: character maps to <undefined>
decode('unicode_escape') выдает то же самое, только на один слэш меньше в каждом символе.