我想从字符串十六进制表示形式创建原始unicode字符。也就是说,我有一个字符串s ='\ u0222',它将是'Ȣ'字符。
现在,如果我这样做,这会起作用
>>> s = '\u0222'
>>> print(s)
'Ȣ'
但是,如果我尝试进行串联,它将显示为
>>> h = '0222'
>>> s = r'\u' + '0222'
>>> print(s)
\u0222
>>> s
'\\u0222'
因为可以看到,字符串中实际上是'\\ u'而不是'\ u'。如何从十六进制字符串创建Unicode字符,或者如何输入真正的单个反斜杠?
答案 0 :(得分:3)
这比我最初预期的要难得多:
code = '0222'
uni_code = r'\u' + code
s = uni_code.encode().decode('unicode_escape')
print(s)
或
code = b'0222'
uni_code = b'\u' + code
s = uni_code.decode('unicode_escape')
print(s)
答案 1 :(得分:2)
仅为字符串常量输入\u0222
,Python解释器会为该语法生成一个Unicode代码点。它不是手动构建的。 chr()
函数用于生成Unicode代码点。以下适用于字符串或整数:
>>> chr(int('0222',16)) # convert string to int base 16
'Ȣ'
>>> chr(0x222) # or just pass an integer.
'Ȣ'
FYI ord()
是补充功能:
>>> hex(ord('Ȣ'))
'0x222'