Python 3:我如何获取变量中的值并将其转换为 unicode 字符?

Python 3: How can I take a value in a variable and convert that to a unicode character?

我正在尝试获取一个值并将其按名称或按值转换为 unicode 字符。我见过的每个示例都将值硬编码到字符串中(如 q = '\uc3a8'),但这对我来说并不是很有帮助。我正在将一些数字或文字名称输入到变量中。我只是想不通如何让它去。我已经尝试了编码、解码、评估、r 字符串、f 字符串的各种迭代,但我一无所获。我错过了什么?这是在 Python 3.10.

LATIN_SMALL_LETTER_E_WITH_GRAVE = 0xC3A8
j = LATIN_SMALL_LETTER_E_WITH_GRAVE
print (j, "\u%04x" % j)

然而,当我 运行 它时,我得到这个:

    print (j, "\u%04x" % j)
                       ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

同样,如果我这样做:

char_name = "LATIN SMALL LETTER E WITH GRAVE"
z = "\N{" + char_name + "}"

我明白了:

    z = "\N{" + char_name + "}"
              ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: malformed \N character escape

这是我的尝试,可能对你有帮助。 如果取十六进制指示符'0x'后面的数字C3A8,就可以显示Unicode字符的信息,然后赋值给一个变量,方法如下:

import unicodedata


def unicode_test(value):
    name = unicodedata.name(value)
    value2 = unicodedata.lookup(name)

    print('value="%s", name="%s", value2 = "%s"' % (value, name, value2))
    return value


character_wanted = unicode_test('\uC3A8')

输出:

value="쎨", name="HANGUL SYLLABLE SSYEOL", value2 = "쎨"

当然,上面的评论建议您使用 chr 方法执行的操作也是完全正确的。我相信他们会给你相同的结果,这只取决于你打算使用的输入:

print(character_wanted, chr(0xC3A8))

输出:

쎨 쎨

Bill Lubanovic 着的 Introducing Python 一书中的代码片段,第 1 页148.