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