如何将unicode转义序列转换为python字符串中的unicode字符

时间:2009-06-13 06:56:27

标签: python unicode python-2.x

当我尝试使用“unicode(head.contents [3])”获取标签的内容时,我得到类似于此的输出:“Christensen Sk \ xf6ld”。我希望转义序列作为字符串返回。怎么在python中做到?

3 个答案:

答案 0 :(得分:29)

假设Python将该名称视为普通字符串,您首先必须将其解码为unicode:

>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'

实现这一目标的另一种方法:

>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'

注意字符串前面的“u”,表示它是uncode。如果您打印它,正确显示重音字母:

>>> print name.decode('latin-1')
Christensen Sköld

BTW:必要时,您可以使用de“encode”方法将unicode转换为例如UTF-8字符串:

>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'

答案 1 :(得分:8)

给定带有Unicode转义符b"\N{SNOWMAN}"的字节字符串,b"\N{SNOWMAN}".decode('unicode-escape)将生成预期的Unicode字符串u'\u2603'

答案 2 :(得分:7)

我怀疑它在正常情况下工作正常。默认情况下,Python以ASCII编码显示字符串,因为并非所有终端都支持unicode。但是,如果你实际打印字符串,它应该工作。请参阅以下示例:

>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa