![](/img/trans.png)
[英]Converting Python unicode code point string to its actual unicode character
[英]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.