我正在尝试在Python()中打印xor符号。
我可以很好地打印通用量词:
>>> print u"\u2200"
∀
但是当我做xor时,它会打印8而不是:
>>> print u"\u10308"
8
为什么?
答案 0 :(得分:4)
当您使用u'\uXXXX'
指定unicode时,XXXX必须正好是4个十六进制数字。要指定具有8个十六进制数的unicode,必须使用大写U:u'\UXXXXXXXX'
。
所以u'\u10308'
实际上是两个字符,u'\u1030'
后跟u'8'
。
u'\u1030'
是MYANMAR VOWEL SIGN UU
character,这是一个非间距标记。这个角色本身就是not visible along the baseline。所以你最终看到的是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'
答案 1 :(得分:1)
主要问题是\u
转义序列仅使用接下来的四个十六进制数字,因此u"\u10308"
是包含Unicode代码点U + 1030(MYANMAR VOWEL SIGN UU)的字符串,后跟{ {1}}。显然,您的终端没有正确的字体来显示缅甸字符,因此打印时不会出现第一个字符。要指定具有四个以上十六进制数字的Unicode代码点,您需要使用8
后跟八位数,即\U
。但请注意,您尝试获取的角色实际上是OLD ITALIC LETTER THE,它可能看起来像(许多符号之一)XOR但是不同。对于您想要的字形,更合适的选择是U + 2297(CIRCLED TIMES,或⊗)。