Строка 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) не является ответом. Тогда что?

3 Solutions collect form web for “Строка Python для unicode”

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' 

Декодируйте его с помощью кодека 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() более приятный.

 >>> a="Hello\u2026" >>> print a.decode('unicode-escape') Hello… 
Python - лучший язык программирования в мире.