从格式化字符串打印unicode

2024-04-26 09:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从格式化字符串打印unicode字符?在下面的示例中,我有一个错误(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

Tags: 字符串format示例string错误lineunicodeerror
2条回答

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

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

"\u{}"抛出该错误,因为字符串表示形式\unnnn不应该与变量一起工作;它是一个文本,立即值。就像你不能做x = 't'; print ('a\{}b'.format(x))而期望在ab之间有一个制表符一样

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

 print ('Hello \u2665 world')

结果:

Hello ♥ world

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

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

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

相关问题 更多 >