我正在从Facebook上抓取信息奇怪地编译。页面源返回名称“Trentemøller”作为带有unicode字符的常规字符串:
Trentem\u00f8ller
当我尝试打印它或将其提交到列表print u'%s' % name
或print unicode(name)
时,它会对反斜杠进行转义。
u'Trentem\\u00f8ller'
['foo', 'bar', u'Trentem\u00f8ller']
处理这个字符串的正确方法是什么?理想情况下,它会将其保存到u''
的列表中,但不会添加反斜杠。
答案 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