如何从格式化的字符串中打印unichar?在下面的示例中,我有一个错误(python3):
python -c 'print(u"\u{}".format("2665"))'
File "<string>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape
答案 0 :(得分:4)
有点尴尬,但是您可以使用原始字符串文字进行编码,然后使用unicode_escape
编码进行解码:
print(r"\u{}".format("2665").encode().decode('unicode_escape'))
# ♥
答案 1 :(得分:4)
"\u{}"
会引发该错误,因为字符串表示形式\unnnn
不应该与变量一起使用。这是立即的价值。就像您无法执行x = 't'; print ('a\{}b'.format(x))
并期望在a
和b
之间使用制表符一样。
要打印任何Unicode字符,请立即在字符串本身中输入其文字代码:
print ('Hello \u2665 world')
结果:
Hello ♥ world
–请注意,字符串本身不需要u
前缀;那是Python 2.x'ism –或者,如果您想在变量中提供字符值:
print ('Hello {:c} world'.format(0x2665))
其中(1):c
强制值的字符表示,而(2)您需要指示值本身为十六进制。 (因为字符串表示形式\unnnn
总是 以十六进制表示。)