我有一个存储字符串"u05e2"
的变量(该值一直在变化,因为我在循环中设置了它)。我想用该Unicode值打印希伯来字母。我尝试了以下操作,但没有成功:
>>> a = 'u05e2'
>>> print(u'\{}'.format(a))
我得到了\u05e2
而不是ע
(在这种情况下)。
我也尝试这样做:
>>> a = 'u05e2'
>>> b = '\\' + a
>>> print(u'{}'.format(b))
没有人工作。我该如何解决?
谢谢!
答案 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)
ע
希望这对您有所帮助。