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

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)

  • 不,请再次阅读Mark的示例。将数据从任何形式(latin1,cp1252等)解码为unicode后,您需要使用(1)数据库支持和(2)保留所有unicode字符的编码方式对unicode字符串进行编码...通常为UTF-8 。 (2认同)

joe*_*ker 9

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


BJ *_*mer 7

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

>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
Run Code Online (Sandbox Code Playgroud)