Pythonstring到Unicode

可能重复:
我如何处理一个ASCIIstring作为unicode和unescape在python中的转义字符?
如何将unicode转义序列转换为pythonstring中的unicode字符

我有一个包含unicode字符的string,例如\u2026等等。不知怎的,它不是以unicode接收到的,而是作为一个str来接收的。 我如何将其转换回unicode?

 >>> a="Hello\u2026" >>> b=u"Hello\u2026" >>> print a Hello\u2026 >>> print b Hello… >>> print unicode(a) Hello\u2026 >>> 

unicode(a)显然unicode(a)不是答案。 那么是什么?

Unicode转义只能在Unicodestring中工作,所以这个

  a="\u2026" 

实际上是6个字符的string:'\','u','2','0','2','6'。

为了使unicode不在这里,使用decode('unicode-escape')

 a="\u2026" print repr(a) print repr(a.decode('unicode-escape')) ## '\\u2026' ## u'\u2026' 

使用unicode-escape解码器对其进行解码:

 >>> a="Hello\u2026" >>> a.decode('unicode-escape') u'Hello\u2026' >>> print _ Hello… 

这是因为对于非Unicodestring,“u”不能被识别,而是被看作是string(更清楚地说, 'Hello\\u2026' )。 您需要解码转义,并且unicode-escape编解码器可以为您做到这一点。

请注意,您可以通过指定编解码器参数来获得unicode以相同的方式识别它:

 >>> unicode(a, 'unicode-escape') u'Hello\u2026' 

但是a.decode()方法更好。

 >>> a="Hello\u2026" >>> print a.decode('unicode-escape') Hello…