Строка Python для unicode
Возможный дубликат:
Как обрабатывать строку ASCII как unicode и unescape экранированные символы в ней на python?
Как преобразовать escape-последовательности Unicode в символы Unicode в строке python
У меня есть строка, которая содержит символы Unicode, например. \u2026
и т.д. Как-то он не получен мне как unicode
, но получен как str
. Как преобразовать его обратно в unicode?
>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>>
Значит, unicode(a)
не является ответом. Тогда что такое?
Ответы
Ответ 1
Unicode escapes работает только в строках unicode, поэтому это
a="\u2026"
- фактически строка из 6 символов: '\', 'u', '2', '0', '2', '6'.
Чтобы сделать unicode из этого, используйте decode('unicode-escape')
:
a="\u2026"
print repr(a)
print repr(a.decode('unicode-escape'))
## '\\u2026'
## u'\u2026'
Ответ 2
Декодируйте его с помощью кодека unicode-escape
:
>>> a="Hello\u2026"
>>> a.decode('unicode-escape')
u'Hello\u2026'
>>> print _
Hello…
Это связано с тем, что для строки, отличной от юникода, \u2026
не распознается, но вместо этого рассматривается как буквальная серия символов (чтобы сделать ее более четкой, 'Hello\\u2026'
). Вам необходимо декодировать экраны, а unicode-escape
-кодек может сделать это для вас.
Обратите внимание, что вы можете получить unicode
, чтобы распознать его таким же образом, указав аргумент кодека:
>>> unicode(a, 'unicode-escape')
u'Hello\u2026'
Но способ a.decode()
более приятный.
Ответ 3
>>> a="Hello\u2026"
>>> print a.decode('unicode-escape')
Hello…