Как преобразовать escape-последовательности unicode в unicode символы в строке python

Когда я попытался получить содержимое тега, используя "unicode (head.contents [3])", я получаю аналогичный результат: "Christensen Sk\xf6ld". Я хочу, чтобы escape-последовательность возвращалась как строка. Как это сделать в python?

Ответ 1

Предполагая, что Python видит это имя как обычную строку, вам сначала придется декодировать его в unicode:

>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'

Другой способ достичь этого:

>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'

Обратите внимание на "u" перед строкой, сигнализируя, что она не определена. Если вы напечатаете это, буква с акцентом будет показана правильно:

>>> print name.decode('latin-1')
Christensen Sköld

BTW: при необходимости вы можете использовать метод "encode", чтобы включить юникод, например. строка UTF-8:

>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'

Ответ 2

Я подозреваю, что он работает нормально. По умолчанию Python отображает строки в кодировке ASCII, поскольку не все терминалы поддерживают unicode. Если вы действительно печатаете строку, она должна работать. См. Следующий пример:

>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa

Ответ 3

Учитывая байтовую строку с экранами Unicode b"\N{SNOWMAN}", b"\N{SNOWMAN}".decode('unicode-escape) создаст ожидаемую строку Unicode u'\u2603'.