无法打印某些Unicode格式的上标

3
使用这个页面如何找到下标字母的Unicode?,我可以打印出除j、l、r、w、y、s和h之外的所有上标。Unicode明显已经编码了这些上标,但由于某种原因它在Python中无法工作。所以对于其他上标,我只需写:
ua = u"\u1d43"
ub = u"\u1d47"
uc = u"\u1d9c"
ud = u"\u1d48"
ue = u"\u1d49"
uf = u"\u1da0"
ug = u"\u1d4d"
ui = u"\u2071"
uk = u"\u1d4f"
um = u"\u1d50"
un = u"\u207f"
uo = u"\u1d52"
up = u"\u1d56"
ut = u"\u1d57"
uv = u"\u1d5b"
uu = u"\u1d58"

但是,当我对麻烦的上标进行此操作时,我会收到错误消息:“SyntaxError:(unicode错误)'unicodeescape'编解码器无法解码0-4位置中的字节:截断\uXXXX escape”。像往常一样,错误消息没有任何意义。这是我用于无法工作的上标的代码:

uw = u"\u2b7"
uy = u"\u2b8"
uj = u"\u2B2"
ul = u"\u2E1"
ur = u"\u2b3"
us = u"\u2e2"
uh = u"\u2b0"

这一定与所有上标都以2开头,且只有3位数有关。我也尝试了使用大写和小写字母重新编写代码。

1个回答

3
假设使用Python 3,应该是一个16位或32位十六进制(即4或8个数字)的代码。您的错误信息提示需要4个数字,因为它说\uXXXX
>>> uw = u"\u2b7"
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \uXXXX escape

然而,您还可以以另外两种方式对Unicode字符进行编码(请参见上面链接的文档):
>>> uw = u"\u02b7"
>>> uw = u"\u000002b7"
>>> uw = u"\N{MODIFIER LETTER SMALL W}"
>>>

太好了。如果这是一个可接受的解决方案,请不要忘记接受答案。谢谢! - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接