【问题标题】:How to convert symbols into their respective unicode representation using python3?如何使用 python3 将符号转换为它们各自的 unicode 表示?
【发布时间】:2017-05-13 12:42:24
【问题描述】:

我想将梵文脚本字符(例如“अ”)转换为其 unicode 表示形式 \u0905。 在 python2.7 的早期,我使用each_character.encode("unicode_escape"),其中each_character 指的是梵文脚本字符。 但是最近我开始研究python3,当我运行上面的sn-p时出现以下错误?

expected str instance, bytes found

任何人都可以提出一种将所有字符转换为其 unicode 表示的方法。我正在研究一个梵文 OCR,我需要 Unicode 表示以便将它们作为基本事实传递。

【问题讨论】:

  • 请发布一个示例脚本来演示该问题。应该只有几行。

标签: python python-3.x unicode python-3.5


【解决方案1】:

如果你有一个 unicode 字符串,像这样:

text = u'अ'

在 Python 2 中,您可以使用 repr() 来获取转义表示:

>>> repr(u'अ')
"u'\\u0905'"

但是,在 Python 3 中,非 ASCII 字符不会被转义:

>>> repr(text)
"'अ'"

您想要的是转义非 ASCII 字符。你可以这样做我喜欢这样:

>>> u'अ'.encode('ascii', errors='backslashreplace')
b'\\u0905'

结果是 Python 3 中的 bytes 字符串(Python 2 中的 str),因此如果需要 unicode 字符串,则需要对其进行解码,如下所示:

>>> u'अ'.encode('ascii', errors='backslashreplace').decode('ascii')
'\\u0905'

结果是一个 unicode 字符串。

参考 Python 3 文档:Converting to Bytes

【讨论】:

    【解决方案2】:

    您正在处理字节对象,而不是字符串。您应该使用bytes.decode 方法将字节转换为字符串。

    >>> b = b'\xe0\xa4\x85'
    >>> b.decode('utf-8').encode('unicode_escape')
    b'\\u0905'
    >>> print(b.decode('utf-8').encode('unicode_escape').decode())
    \u0905
    

    注意:您应该根据使用的编码更改utf-8

    注意:如果您正在迭代字节对象,您应该先更改代码以解码字节对象,然后再进行迭代;否则,解码将失败或产生错误的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2015-01-15
      • 1970-01-01
      • 2019-05-05
      相关资源
      最近更新 更多