Python 3.4 中的 Unicode 字符创建
Unicode character creation in Python 3.4
使用 Python 3.4,假设我有一些来自文件的数据,它实际上是 6 个单独的字符 \u 0 0 C 0 但我需要将它转换为单个 unicode 字符 \u00C0。有没有一种简单的方法可以进行这种转换?我在 Python 3.4 Unicode 文档中找不到任何似乎提供这种转换的内容,除了使用赋值语句的 exec() 的复杂方式,我希望尽可能避免这种方式。
谢谢。
嗯,有:
>>> b'\u00C0'.decode('unicode-escape')
'À'
然而,unicode-escape
编解码器针对的是一种特殊的字符串编码格式,即Python字符串文字。当遇到Python中特殊的其他转义序列时,例如\xC0
、\n
、\
或\U000000C0
,它可能会产生意想不到的结果,它可能不会从其他字符串文字格式中识别其他转义序列。它还可能错误地处理基本多语言平面之外的字符(例如 JSON 会将 U+10000 编码为代理 \uD800\uDC00
)。
因此,除非您的输入数据确实是一个 Python 字符串字面量,去掉了引号定界符,否则这不是正确的做法,并且可能会在某些极端情况下产生不需要的结果。有很多格式使用 \u
来表示 Unicode 字符;您应该尝试找出它到底是什么格式,并为该方案使用解码器。例如,如果文件是 JSON,正确的做法是使用 JSON 解析器而不是尝试处理 \u
/\n
/\
/等你自己。
使用 Python 3.4,假设我有一些来自文件的数据,它实际上是 6 个单独的字符 \u 0 0 C 0 但我需要将它转换为单个 unicode 字符 \u00C0。有没有一种简单的方法可以进行这种转换?我在 Python 3.4 Unicode 文档中找不到任何似乎提供这种转换的内容,除了使用赋值语句的 exec() 的复杂方式,我希望尽可能避免这种方式。
谢谢。
嗯,有:
>>> b'\u00C0'.decode('unicode-escape')
'À'
然而,unicode-escape
编解码器针对的是一种特殊的字符串编码格式,即Python字符串文字。当遇到Python中特殊的其他转义序列时,例如\xC0
、\n
、\
或\U000000C0
,它可能会产生意想不到的结果,它可能不会从其他字符串文字格式中识别其他转义序列。它还可能错误地处理基本多语言平面之外的字符(例如 JSON 会将 U+10000 编码为代理 \uD800\uDC00
)。
因此,除非您的输入数据确实是一个 Python 字符串字面量,去掉了引号定界符,否则这不是正确的做法,并且可能会在某些极端情况下产生不需要的结果。有很多格式使用 \u
来表示 Unicode 字符;您应该尝试找出它到底是什么格式,并为该方案使用解码器。例如,如果文件是 JSON,正确的做法是使用 JSON 解析器而不是尝试处理 \u
/\n
/\
/等你自己。