31

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

4

3 回答 3

31

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

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

实现此目的的另一种方法:

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

注意字符串前面的“u”,表示它是未编码的。如果你打印这个,重音字母会正确显示:

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

顺便说一句:必要时,您可以使用 de "encode" 方法将 unicode 转换为例如 UTF-8 字符串:

>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
于 2009-06-14T06:46:22.457 回答
10

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

>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
于 2009-06-13T07:02:20.383 回答
10

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

于 2012-08-23T00:36:28.710 回答