从十六进制字符串表示法创建原始unicode字符/输入单个反斜杠

2024-09-30 01:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从字符串十六进制表示中创建一个原始unicode字符。也就是说,我有一个字符串s='\u0222',它将是'Ȣ'字符。你知道吗

现在,如果我这样做了,这就行了

>>> s = '\u0222'
>>> print(s)
'Ȣ'

但是,如果我尝试连接,结果是

>>> h = '0222'
>>> s = r'\u' + '0222'
>>> print(s)
\u0222
>>> s
'\\u0222'

因为可以看到,字符串中的实际内容是'\\u'而不是'\u'。如何从十六进制字符串创建unicode字符,或者如何输入真正的单个反斜杠?你知道吗


Tags: 字符串内容unicode字符print斜杠u0222
2条回答

输入\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'

这比我最初预期的要困难得多:

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)

相关问题 更多 >

    热门问题