如何从码位变量中获取Unicode字符?

2024-06-28 19:33:24 发布

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

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

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

我得到了\u05e2,而不是{}(在本例中)。在

我也尝试过:

^{pr2}$

两个都没用。我该怎么解决这个问题?在

提前谢谢!在


Tags: 方法字符串format字母unicodeprint本例pr2
3条回答

这是因为您必须在字符串之外添加后缀u。在

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

希望这对你有帮助。在

您只需要在u05e2之前加一个\。要打印Unicode字符,必须提供Unicode格式字符串。在

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

#Output
ע

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

^{pr2}$

验证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

这看起来像一个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 ת

相关问题 更多 >