【发布时间】:2010-11-02 16:11:10
【问题描述】:
当我尝试使用“unicode(head.contents[3])”获取标签的内容时,我得到的输出类似于:“Christensen Sk\xf6ld”。我希望转义序列作为字符串返回。在python中怎么做?
【问题讨论】:
标签: python unicode python-2.x
当我尝试使用“unicode(head.contents[3])”获取标签的内容时,我得到的输出类似于:“Christensen Sk\xf6ld”。我希望转义序列作为字符串返回。在python中怎么做?
【问题讨论】:
标签: python unicode python-2.x
假设 Python 将名称视为普通字符串,您首先必须将其解码为 unicode:
>>> 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 转换为 e.g.一个 UTF-8 字符串:
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
【讨论】:
我怀疑它确实工作正常。默认情况下,Python 以 ASCII 编码显示字符串,因为并非所有终端都支持 unicode。但是,如果您实际打印字符串,它应该可以工作。请参阅以下示例:
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
【讨论】:
给定带有 Unicode 转义符 b"\N{SNOWMAN}" 的字节字符串,b"\N{SNOWMAN}".decode('unicode-escape) 将生成预期的 Unicode 字符串 u'\u2603'。
【讨论】: