Когда я попытался получить содержимое тега с помощью «unicode(head.contents[3])», я получил вывод, подобный этому: «Christensen Sk\xf6ld». Я хочу, чтобы escape-последовательность возвращалась в виде строки. Как это сделать на питоне?
Как преобразовать escape-последовательности Unicode в символы Unicode в строке python
Ответы (3)
Предполагая, что Python видит имя как обычную строку, вам сначала нужно будет декодировать его в юникод:
>>> 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
Кстати: при необходимости вы можете использовать метод «кодирования», чтобы превратить юникод, например, в. строка UTF-8:
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
Учитывая строку байтов с экранами Unicode b"\N{SNOWMAN}"
, b"\N{SNOWMAN}".decode('unicode-escape)
создаст ожидаемую строку Unicode u'\u2603'
.
Я подозреваю, что это действительно работает правильно. По умолчанию Python отображает строки в кодировке ASCII, поскольку не все терминалы поддерживают юникод. Однако, если вы на самом деле печатаете строку, она должна работать. См. следующий пример:
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa