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)))
输出

注意:
由于不同格式的中文字体与英文字母的宽度不一,需要多次尝试占用宽度,以达到最优的对齐效果。
本文详细介绍了Python中str.format()函数的使用,包括默认格式和进阶技巧,如对齐方式和占用宽度的约束。通过示例展示了如何实现数据的对齐输出,特别是针对中文字符的宽度问题。同时强调了根据字体宽度调整占用宽度以达到最佳对齐效果的重要性。
1万+





