Python 2 и проблемы с кодировками — это единое целое. И мало, что сами файлы с исходниками сохраняют в самых разных кодировках, так и текстовые файлы с данными этим грешат. Казалось бы, используй encode/decode и что тут думать. Но бывает, что декодируешь юникод и получаешь строку:

u'\xd0\x9a\xd1\x83\xd1\x80\xd1\x83\xd0\xbc\xd0\xbe\xd1\x87'

Юникодные символы в юникодной строке. И вот здесь гугл начинает молить о пощаде, предлагая вариант — составить словарь символов и букв и сделать replace.

Но есть и более удобный вариант — кодек 'raw-unicode-escape'. И тогда, использование выглядит так:

>>> u'\xd0\x9a\xd1\x83\xd1\x80\xd1\x83\xd0\xbc\xd0\xbe\xd1\x87'.encode('raw-unicode-escape')
Курумоч


Комментарии