从格式化的字符串中打印unicode

时间:2018-11-29 14:36:14

标签: python python-3.x unicode

如何从格式化的字符串中打印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

2 个答案:

答案 0 :(得分:4)

有点尴尬,但是您可以使用原始字符串文字进行编码,然后使用unicode_escape编码进行解码:

print(r"\u{}".format("2665").encode().decode('unicode_escape'))
#  ♥

答案 1 :(得分:4)

"\u{}"会引发该错误,因为字符串表示形式\unnnn不应该与变量一起使用。这是立即的价值。就像您无法执行x = 't'; print ('a\{}b'.format(x))并期望在ab之间使用制表符一样。

要打印任何Unicode字符,请立即在字符串本身中输入其文字代码:

 print ('Hello \u2665 world')

结果:

Hello ♥ world

–请注意,字符串本身不需要u前缀;那是Python 2.x'ism –或者,如果您想在变量中提供字符值:

print ('Hello {:c} world'.format(0x2665))

其中(1):c强制值的字符表示,而(2)您需要指示值本身为十六进制。 (因为字符串表示形式\unnnn总是 以十六进制表示。)