Unicode повторно перешифрован - PullRequest
2 голосов
/ 03 декабря 2011

Я собираю информацию из Facebook, которая странным образом компилируется. Источник страницы возвращает имя «Trentemøller» в виде обычной строки с символом Unicode:

Trentem\u00f8ller

Когда я пытаюсь распечатать это или зафиксировать его в списке print u'%s' % name или print unicode(name), выполняется экранирование обратной косой черты.

u'Trentem\\u00f8ller'

['foo', 'bar', u'Trentem\u00f8ller']

Как правильно обращаться с этой строкой? В идеале это сохранит его в списке в u'', но не в добавленном обратном слэше.

1 Ответ

4 голосов
/ 03 декабря 2011

Если вы управляете формированием строки Unicode, используйте только одну обратную косую черту:

>>> print u'Trentem\u00f8ller'
Trentemøller

Если обычная строка уже сформирована скребком на экране, вам нужно будет повторно оценить строку, чтобы преобразовать escape-последовательности обратной косой черты в реальные символы Юникода. Встроенный eval может показаться заманчивым, но вместо него безопаснее использовать ast.literal_eval :

>>> import ast
>>> s = 'Trentem\u00f8ller'                   # a regular string
>>> print ast.literal_eval('u"""' + s + '"""')
Trentemøller
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...