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…