Дополнительно
Перевод строки Python в юникод
У меня есть строка, которая содержит символы юникода, например, \u2026
и т.д. Почему-то она не принимается как unicode
, а принимается как str
. Как мне преобразовать ее обратно в юникод?
>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>>
Итак, очевидно, что unicode(a)
- это не ответ. Тогда что же?
53
3
Эскапады Юникода работают только в строках Юникода, так что это
на самом деле является строкой из 6 символов: '\', 'u', '2', '0', '2', '6'.
Чтобы сделать из этого юникод, используйте
decode('unicode-escape')
:Декодируйте его с помощью кодека
unicode-escape
:Это происходит потому, что для неюникодной строки
\u2026
не распознается, а рассматривается как буквальная серия символов (чтобы выразить это более ясно,'Hello\\\u2026'
). Вам нужно декодировать эскейпы, и кодекunicode-escape
может сделать это за вас.Обратите внимание, что вы можете заставить
unicode
распознать его таким же образом, указав аргумент codec:Но способ
a.decode()
приятнее.