У мене є питання про кодування Python 2. Я намагаюся декодувати рядок ASCII, який містить код Unicode листа до Unicode, а потім кодувати його назад до Latin-1, але без успіху. Ось ілюстрація:
In[27]: d = u"u010d"
In[28]: print d.encode("utf-8")
č
In[29]: d1 = "u010d"
In[30]: d1.decode("ascii").encode("utf-8")
Out[30]: "\u010d"
Я хотів би перетворити "u010d"
до "č"
. Чи є вбудовані рішення для уникнення заміни користувацьких рядків?
Відповіді:
1 для відповіді № 1Коли ти робиш
d1 = "u010d"
ви насправді отримуєте цей рядок:
In [3]: d1
Out[3]: "\u010d"
Це тому, що "звичайні" (не-Unicode) рядки не розпізнають unnnn
escape-послідовність і, отже, перетворити її в літеральний зворотний слеш, за яким слід unnnn
.
Для того, щоб розшифрувати це, потрібно використовувати unicode_escape
кодек:
In [4]: print d1.decode("unicode_escape").encode("utf-8")
č
Але, звичайно, ви не повинні використовувати вихідні послідовності Unicode в рядках, які не є Unicode, в першу чергу.