Unicode是重新unicode

时间:2011-12-03 01:19:17

标签: python unicode

我正在从Facebook上抓取信息奇怪地编译。页面源返回名称“Trentemøller”作为带有unicode字符的常规字符串:

Trentem\u00f8ller

当我尝试打印它或将其提交到列表print u'%s' % nameprint unicode(name)时,它会对反斜杠进行转义。

u'Trentem\\u00f8ller'

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

处理这个字符串的正确方法是什么?理想情况下,它会将其保存到u''的列表中,但不会添加反斜杠。

1 个答案:

答案 0 :(得分:4)

如果您控制形成unicode字符串,则只使用一个反斜杠:

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

如果屏幕scaper已经形成常规字符串,则需要重新计算字符串以将backslash escape sequences转换为真正的unicode字符。内置的 eval 会很诱人,但使用ast.literal_eval会更安全:

>>> import ast
>>> s = 'Trentem\u00f8ller'                   # a regular string
>>> print ast.literal_eval('u"""' + s + '"""')
Trentemøller