我正在尝试在 Python () 中打印 xor 符号。
我可以很好地打印一个通用量词:
>>> print u"\u2200"
∀
但是当我做异或时,它会打印 8 :
>>> print u"\u10308"
8
为什么?
我正在尝试在 Python () 中打印 xor 符号。
我可以很好地打印一个通用量词:
>>> print u"\u2200"
∀
但是当我做异或时,它会打印 8 :
>>> print u"\u10308"
8
为什么?
当您使用 指定 unicode 时u'\uXXXX'
,XXXX 必须正好是 4 个十六进制数字。要指定 8 个十六进制数字的 unicode,您必须使用大写字母 U: u'\UXXXXXXXX'
。
所以u'\u10308'
实际上是两个字符,u'\u1030'
后跟u'8'
.
u'\u1030'
是MYANMAR VOWEL SIGN UU
字符,它是一个非间距标记。该字符本身沿基线不可见。所以你最终看到的只是8
.
您发布的符号是OLD ITALIC LETTER THE
unicode 字符。
In [103]: print(u'\N{OLD ITALIC LETTER THE}')
In [104]: print(u'\U00010308')
XOR
Unicode字符是:
In [105]: print(u'\N{XOR}')
⊻
In [106]: print(u'\u22bb')
⊻
您可能会觉得有用的其他字符:
In [110]: print(u'\N{CIRCLED PLUS}')
⊕
In [111]: print(u'\N{CIRCLED TIMES}')
⊗
In [112]: print(u'\N{N-ARY CIRCLED PLUS OPERATOR}')
⨁
In [113]: print(u'\N{N-ARY CIRCLED TIMES OPERATOR}')
⨂
PS。您可以通过以下方式找到(某些)Unicode 字符的 Unicode 名称:
In [95]: import unicodedata as UD
In [96]: UD.name(''.decode('utf-8'))
Out[96]: 'OLD ITALIC LETTER THE'
主要问题是\u
转义序列仅使用接下来的四个十六进制数字,u"\u10308"
包含 Unicode 代码点 U+1030 (MYANMAR VOWEL SIGN UU) 的字符串也是如此8
。显然,您的终端没有正确的字体来显示缅甸字符,因此打印时不会出现第一个字符。为了指定一个多于四个十六进制数字的 Unicode 代码点,您需要使用\U
后跟八位数字,即u"\U00010308"
. 但是,请注意,您尝试获取的字符实际上是 OLD ITALIC LETTER THE,它可能看起来像 XOR(许多符号之一)但有所不同。对于您想要的字形,更合适的选择是 U+2297(CIRCLED TIMES,或 ⊗)。