Python 从十六进制字符串表示法创建原始unicode字符/输入单个反斜杠
我想从字符串十六进制表示创建一个原始unicode字符。也就是说,我有一个字符串s='\u0222',它将是“Ȣ”字符 现在,如果我这样做了,这就行了Python 从十六进制字符串表示法创建原始unicode字符/输入单个反斜杠,python,python-3.x,string,unicode,backslash,Python,Python 3.x,String,Unicode,Backslash,我想从字符串十六进制表示创建一个原始unicode字符。也就是说,我有一个字符串s='\u0222',它将是“Ȣ”字符 现在,如果我这样做了,这就行了 >>> s = '\u0222' >>> print(s) 'Ȣ' 但是,如果我尝试进行连接,结果是 >>> h = '0222' >>> s = r'\u' + '0222' >>> print(s) \u0222 >>> s '\\u
>>> s = '\u0222'
>>> print(s)
'Ȣ'
但是,如果我尝试进行连接,结果是
>>> h = '0222'
>>> s = r'\u' + '0222'
>>> print(s)
\u0222
>>> s
'\\u0222'
因为可以看到,字符串中实际包含的是“\\u”而不是“\u”。如何从十六进制字符串创建unicode字符,或者如何输入真正的单个反斜杠?这比我最初预期的要难解决得多:
code = '0222'
uni_code = r'\u' + code
s = uni_code.encode().decode('unicode_escape')
print(s)
或
输入
\u0222
仅用于字符串常量,Python解释器为该语法生成一个Unicode代码点。它不是人工构建的。chr()
函数用于生成Unicode代码点。以下内容适用于字符串或整数:
>>> chr(int('0222',16)) # convert string to int base 16
'Ȣ'
>>> chr(0x222) # or just pass an integer.
'Ȣ'
FYIord()
是补充功能:
>>> hex(ord('Ȣ'))
'0x222'
同意,比看上去难多了。你在我测试的时候打败了我!对于OP,可以在中找到更多细节和示例,因为构建Unicode转义常量不是最直接的途径。请参阅
chr()
函数。更好的答案。我想是有什么原因造成的,但我不知道是什么原因。
>>> hex(ord('Ȣ'))
'0x222'