如何在Python字符串中将Unicode转义序列转换为Unicode字符
当我尝试用“unicode(head.contents[3])”来获取一个标签的内容时,我得到了类似这样的输出:“Christensen Sk\xf6ld”。我希望能把这个转义序列作为字符串返回。请问在Python中该怎么做呢?
3 个回答
10
假设你有一个包含Unicode转义字符的字节字符串,比如 b"\N{SNOWMAN}"
。如果你用 b"\N{SNOWMAN}".decode('unicode-escape)
这个方法去处理它,就会得到你想要的Unicode字符串 u'\u2603'
,也就是雪人的符号。
10
我觉得它其实是正常工作的。默认情况下,Python会用ASCII编码来显示字符串,因为并不是所有的终端都支持unicode。如果你真的打印这个字符串,它应该是可以正常显示的。看看下面这个例子:
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
34
假设Python把这个名字当成普通字符串,你首先需要把它解码成unicode格式:
>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'
还有一种方法可以做到这一点:
>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'
注意字符串前面的“u”,这表示它是unicode格式。如果你打印出来,这个带重音的字母就会正确显示:
>>> print name.decode('latin-1')
Christensen Sköld
顺便说一下:在必要的时候,你可以使用“encode”方法把unicode转换成比如说UTF-8格式的字符串:
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'