【问题标题】:Python string to unicode [duplicate]Python字符串到unicode [重复]
【发布时间】:2012-05-03 08:30:50
【问题描述】:

可能重复:
How do I treat an ASCII string as unicode and unescape the escaped characters in it in python?
How do convert unicode escape sequences to unicode characters in a python string

我有一个包含 unicode 字符的字符串,例如\u2026 等等。不知何故,我没有收到 unicode,而是收到了 str。如何将其转换回 unicode?​​p>

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

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

【问题讨论】:

  • 标签上是这么说的,但要更清楚地指出,这个问题的重点是python 2.x,而不是3.x。

标签: python string unicode python-2.x python-unicode


【解决方案1】:

Unicode 转义只适用于 unicode 字符串,所以这个

 a="\u2026"

实际上是一个6个字符的字符串:'\'、'u'、'2'、'0'、'2'、'6'。

要从中生成 unicode,请使用 decode('unicode-escape'):

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

## '\\u2026'
## u'\u2026'

【讨论】:

    【解决方案2】:

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

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

    这是因为对于非 unicode 字符串,\u2026 无法识别,而是被视为文字序列字符(更清楚地说,'Hello\\u2026')。您需要解码转义,unicode-escape 编解码器可以为您完成。

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

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

    a.decode() 方式更好。

    【讨论】:

      【解决方案3】:
      >>> a="Hello\u2026"
      >>> print a.decode('unicode-escape')
      Hello…
      

      【讨论】:

        猜你喜欢
        • 2017-11-19
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        • 2015-03-25
        • 2018-05-17
        • 1970-01-01
        • 2016-08-30
        相关资源
        最近更新 更多