Vic*_*cky 28 python unicode python-2.x
当我尝试使用"unicode(head.contents [3])"来获取标签的内容时,我得到类似于此的输出:"Christensen Sk\xf6ld".我希望转义序列作为字符串返回.如何在python中做到这一点?
Mar*_*ent 30
假设Python将名称视为普通字符串,您首先必须将其解码为unicode:
>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'
Run Code Online (Sandbox Code Playgroud)
另一种实现此目的的方法:
>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'
Run Code Online (Sandbox Code Playgroud)
注意字符串前面的"u",表示它是uncode.如果您打印它,正确显示重音字母:
>>> print name.decode('latin-1')
Christensen Sköld
Run Code Online (Sandbox Code Playgroud)
顺便说一句:必要时,您可以使用de"encode"方法将unicode转换为例如UTF-8字符串:
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
Run Code Online (Sandbox Code Playgroud)
给定带有Unicode转义的字节字符串b"\N{SNOWMAN}"
,b"\N{SNOWMAN}".decode('unicode-escape)
将产生预期的Unicode字符串u'\u2603'
.
我怀疑它正在正常工作.默认情况下,Python以ASCII编码显示字符串,因为并非所有终端都支持unicode.但是,如果你实际打印字符串,它应该工作.请参阅以下示例:
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
Run Code Online (Sandbox Code Playgroud)