如何将字符串转换为 Unicode 字符
How to transform a string into a Unicode character
我想创建一个非常简单的代码来获取多个字符串输入并显示为 Unicode 字符,例如:
2119 01b4 2602 210c 00f8 1f24
(这应该显示 'Python' 和一些符号)
但我不断收到以下异常:
语法错误:(unicode 错误)'unicodeescape' 编解码器无法解码位置 0-1 中的字节:截断 \uXXXX 转义
我正在尝试使用 '\u' 来保持简单,但如果没有其他方法可以做到这一点,我就不会费心了。
我的代码:
while True:
string = input()
print(f'\u{string}', end='')
我搜索并在 Swift 中找到了一些东西,这正是我想在 Python 中做的事情,但我不太明白:.
假设您真的不关心是否使用 \u
语法,这看起来像:
while True:
string = input()
print(chr(int(string, 16)), end='')
如果您确实出于某种原因关心:
while True:
string = input()
print((br'\u' + string.encode('utf-8')).decode('unicode_escape'), end='')
问题是 unicode 转义优先于 f 字符串格式规范。它将 "\u{str"
视为 4 个字符的转义序列。您可以将其分为两个步骤:创建转义,然后解码。由于unicode字符可以超过4个字节,所以你不妨变大。
>>> import codecs
>>> string = "2119 01b4 2602 210c 00f8 1f24"
>>> for s in string.split(" "):
... print(codecs.decode(rf"\U{s.zfill(8)}", "unicode-escape"), end="")
...
ℙƴ☂ℌøἤ
您不能直接构造 \uxxxx
转义序列,因为这是一种语言构造,但使用 chr
将 Unicode 序数转换为字符更为直接。另外 int(s,16)
会将十六进制字符串转换为整数:
>>> print(''.join(chr(int(x,16)) for x in input().split()))
2119 01b4 2602 210c 00f8 1f24
ℙƴ☂ℌøἤ
我想创建一个非常简单的代码来获取多个字符串输入并显示为 Unicode 字符,例如:
2119 01b4 2602 210c 00f8 1f24 (这应该显示 'Python' 和一些符号)
但我不断收到以下异常:
语法错误:(unicode 错误)'unicodeescape' 编解码器无法解码位置 0-1 中的字节:截断 \uXXXX 转义
我正在尝试使用 '\u' 来保持简单,但如果没有其他方法可以做到这一点,我就不会费心了。
我的代码:
while True:
string = input()
print(f'\u{string}', end='')
我搜索并在 Swift 中找到了一些东西,这正是我想在 Python 中做的事情,但我不太明白:
假设您真的不关心是否使用 \u
语法,这看起来像:
while True:
string = input()
print(chr(int(string, 16)), end='')
如果您确实出于某种原因关心:
while True:
string = input()
print((br'\u' + string.encode('utf-8')).decode('unicode_escape'), end='')
问题是 unicode 转义优先于 f 字符串格式规范。它将 "\u{str"
视为 4 个字符的转义序列。您可以将其分为两个步骤:创建转义,然后解码。由于unicode字符可以超过4个字节,所以你不妨变大。
>>> import codecs
>>> string = "2119 01b4 2602 210c 00f8 1f24"
>>> for s in string.split(" "):
... print(codecs.decode(rf"\U{s.zfill(8)}", "unicode-escape"), end="")
...
ℙƴ☂ℌøἤ
您不能直接构造 \uxxxx
转义序列,因为这是一种语言构造,但使用 chr
将 Unicode 序数转换为字符更为直接。另外 int(s,16)
会将十六进制字符串转换为整数:
>>> print(''.join(chr(int(x,16)) for x in input().split()))
2119 01b4 2602 210c 00f8 1f24
ℙƴ☂ℌøἤ