Python中常用的格式化输出主要有以下两种:
- 使用
%
加英文字母作为占位符,对各种类型的数据进行格式化; str.format()
函数,利用format()
函数中的参数对str
中{}
标识的内容进行替换;
本文主要介绍str.format()
函数的格式化输出。
1.默认格式
# {}中的数字表示format函数中的参数序号(从0开始),默认情况可以不用填写数字
pattern = "{0}\t{1}\t{2}\t{3}\t{4}\t{5}"
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间"))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04"))
输出如下:
由输出结果可以看出,列元素并没有完全对齐,这是因为输出结果是否对齐取决于字体宽度,而一个中文字的宽度大约相当于两个英文字母的宽度,这里需要注意,并不是所有格式的中文字体都是两个英文字母的宽度:
所以为了让对应的位置对齐,需要约束对应位置的打印宽度。看第2小节的进阶部分。
2.进阶
正如上面所说,为了对齐打印出的数据,需要对指定位置的字体宽度进行约束,将约束条件与参数序号用:
隔开,常用的一些约束条件如下:
- 对齐方式:
- 居中对齐:^
- 靠右对齐:>
- 靠左对齐:<
- 占用宽度:使用数字表示,一般跟在对齐方式后面。比如
{:<4}
表示占用4个宽度单位并靠左对齐,若是占用的宽度未使用完则进行填充,默认使用英式空格填充。
# 由于中文字的宽度大约是默认填充方式的2倍,所以写成如下格式
pattern = "{0:<4}\t{1:<16}\t{2:<8}\t{3:<8}\t{4:<10}\t{5:<8}"
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间"))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04"))
输出如下:
使用指定的填充格式
# 冒号后的{6}表示format函数的参数序号为6的参数,即chr(12288)填充剩余的长度
pattern = "{0:{6}<3}\t{1:{6}<8}\t{2:{6}<4}\t{3:{6}<4}\t{4:{6}<7}\t{5:{6}<6}"
# chr(12288)表示中文空格
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间",chr(12288)))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04",chr(12288)))
输出
注意:
由于不同格式的中文字体与英文字母的宽度不一,需要多次尝试占用宽度,以达到最优的对齐效果。