我正在尝试在我正在编写的命令行程序中使用一些简单的unicode字符,但是将这些东西绘制到表中会变得很困难,因为Python似乎将单字符符号视为多字符字符串。
例如,如果我尝试print(u"\u2714".encode("utf-8"))
,我会看到unicode复选标记。但是,如果我尝试向该字符添加一些填充(可能在表格结构中),Python似乎将这个单字符串解释为3个字符的字符串。所有这三行都打印相同的东西:
print("|{:1}|".format(u"\u2714".encode("utf-8")))
print("|{:2}|".format(u"\u2714".encode("utf-8")))
print("|{:3}|".format(u"\u2714".encode("utf-8")))
现在我想我理解为什么这种情况发生了:它是一个多字节字符串。我的问题是,如何让Python适当填充此字符串?
答案 0 :(得分:2)
使您的格式字符串为unicode:
from __future__ import print_function
print(u"|{:1}|".format(u"\u2714"))
print(u"|{:2}|".format(u"\u2714"))
print(u"|{:3}|".format(u"\u2714"))
输出:
|✔|
|✔ |
|✔ |
答案 1 :(得分:1)
此时不要encode('utf-8')
做后者:
>>> u"\u2714".encode("utf-8")
'\xe2\x9c\x94'
UTF-8编码长度为三个字节。看看格式如何与Unicode字符串一起使用:
>>> u"|{:1}|".format(u"\u2714")
u'|\u2714|'
>>> u"|{:2}|".format(u"\u2714")
u'|\u2714 |'
>>> u"|{:3}|".format(u"\u2714")
u'|\u2714 |'
在Python 2.7.3上测试。