2024-04-26 09:15:52 发布
网友
如何从格式化字符串打印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
这有点尴尬,但您可以使用原始字符串文字,编码,然后使用unicode_escape编码进行解码:
unicode_escape
print(r"\u{}".format("2665").encode().decode('unicode_escape')) # ♥
"\u{}"抛出该错误,因为字符串表示形式\unnnn不应该与变量一起工作;它是一个文本,立即值。就像你不能做x = 't'; print ('a\{}b'.format(x))而期望在a和b之间有一个制表符一样
"\u{}"
\unnnn
x = 't'; print ('a\{}b'.format(x))
a
b
要打印任何Unicode字符,请立即在字符串本身中输入其文字代码:
print ('Hello \u2665 world')
结果:
Hello ♥ world
–注意字符串本身不需要u前缀;这是Python2.x'ism–,或者,如果要在变量中提供字符值:
u
print ('Hello {:c} world'.format(0x2665))
其中(1):c强制值的字符表示,以及(2)您需要指示值本身是十六进制的(因为字符串表示形式\unnnn总是以十六进制表示
:c
这有点尴尬,但您可以使用原始字符串文字,编码,然后使用
unicode_escape
编码进行解码:"\u{}"
抛出该错误,因为字符串表示形式\unnnn
不应该与变量一起工作;它是一个文本,立即值。就像你不能做x = 't'; print ('a\{}b'.format(x))
而期望在a
和b
之间有一个制表符一样要打印任何Unicode字符,请立即在字符串本身中输入其文字代码:
结果:
–注意字符串本身不需要
u
前缀;这是Python2.x'ism–,或者,如果要在变量中提供字符值:其中(1)
:c
强制值的字符表示,以及(2)您需要指示值本身是十六进制的(因为字符串表示形式\unnnn
总是以十六进制表示相关问题 更多 >
编程相关推荐