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