如何从代码点变量获取Unicode字符?

时间:2018-12-15 16:11:13

标签: python python-3.x unicode hebrew

我有一个存储字符串"u05e2"的变量(该值一直在变化,因为我在循环中设置了它)。我想用该Unicode值打印希伯来字母。我尝试了以下操作,但没有成功:

>>> a = 'u05e2'
>>> print(u'\{}'.format(a))

我得到了\u05e2而不是ע(在这种情况下)。

我也尝试这样做:

>>> a = 'u05e2'
>>> b = '\\' + a
>>> print(u'{}'.format(b))

没有人工作。我该如何解决?

谢谢!

3 个答案:

答案 0 :(得分:0)

您所需要做的就是在\之前输入u05e2。要打印Unicode字符,您必须提供Unicode格式的字符串。

a = '\u05e2'
print(u'{}'.format(a))

#Output
ע

当您尝试通过在\函数内打印print()尝试另一种方法时,Python首先会转义\并不会显示期望的结果。

a = 'u05e2'
print(u'\{}'.format(a))

#Output
\u05e2

一种验证Unicode格式字符串有效性的方法是使用Python标准库中的ord()内置函数。这将返回传递给它的字符的Unicode代码点(整数)。此函数只需要Unicode字符或代表Unicode字符的字符串。

a = '\u05e2'
print(ord(a)) #1506, the Unicode code point for the Unicode string stored in a

要为上述Unicode代码值(1506)打印Unicode字符,请使用带有c的字符类型格式。 Python docs中对此进行了解释。

print('{0:c}'.format(1506))

#Output
ע

如果我们将普通的字符串文字传递给ord(),则会出现错误。这是因为此字符串不表示Unicode字符。

a = 'u05e2'
print(ord(a))

#Error
TypeError: ord() expected a character, but string of length 5 found

答案 1 :(得分:0)

这似乎是X-Y Problem。如果您希望将Unicode字符用作代码点,请使用整数变量和函数chr(在Python 2上为unichr),而不要尝试格式化转义代码:

>>> for a in range(0x5e0,0x5eb):
...  print(hex(a),chr(a))
...
0x5e0 נ
0x5e1 ס
0x5e2 ע
0x5e3 ף
0x5e4 פ
0x5e5 ץ
0x5e6 צ
0x5e7 ק
0x5e8 ר
0x5e9 ש
0x5ea ת

答案 2 :(得分:-1)

之所以会这样,是因为您必须在字符串之外添加后缀u

a = u'\u05e2'
print(a)
ע

希望这对您有所帮助。