繁体   English   中英

在Python中将Unicode代码点转换为Unicode字符

[英]Turning a unicode code point into a unicode character in Python

我正在解析文本的十六进制/ unicode转义。

所以我会有一个输入字符串

\x{abcd}

这很容易-我得到一个数组["ab", "cd"] ,我将其称为digits ,并对其进行处理:

return bytes(int(d, 16) for d in digits).decode("utf-8")

因此,我基本上将{}之间的所有内容都接受为UTF-8编码的字符,并将其转换为字符。 简单。

>>> bytes(int(d, 16) for d in ["e1", "88", "92"]).decode("utf-8")
'ሒ'

但是我想走另一条路: \\u{1212}应该产生相同的字符。 问题是,我不知道如何将所得的["12", "12"]视为Unicode代码点而不是UTF-8字节,以再次获得ሒ字符。

如何在python 3中执行此操作?

您可以在将数字解析为base-16之后使用chr

>>> chr(int('1212', 16))
'ሒ'
>>> '\u1212'
'ሒ'

如果要在某个字符串中全局替换此字符串,则将re.sub与替换函数一起使用可以使此过程变得简单:

import re

def replacer(match):
    if match.group(2) == 'u':
        return chr(int(match.group(3), 16))
    elif match.group(2) == 'x':
        return  # ...

re.sub(r'(\\(x|u)\{(.*?)\})', replacer, r'\x{abcd} foo \u{1212}')

您是说要编码这样的字符串?

>>> print u"\u1212"
ሒ
>>> print u"\u00A9"
©

编辑:

如果以字符串开头,那只是

>>> chr(int("1212", 16))
'ሒ'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM