Строка 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…