Python中使用f-string打印时如何实现列的垂直对齐?
问题原因
f-string的宽度设置有个默认规则:当你给占位符设置的宽度小于实际内容的长度时,Python会优先输出完整内容,自动忽略你设置的宽度值。
你代码里设置的{"Progress":2}中,Progress本身长度为8,远大于你设定的宽度2,所以第一行的实际列宽是内容本身的长度,而第二行星号行是按照你设定的小宽度排版,自然无法对齐。
解决方法
把每列的宽度设置为大于等于对应列标题的实际长度即可,参考修改后的代码:
# 每列宽度取对应列标题的长度+1,增加列间距更美观,<代表左对齐 print(f'{"Progress":<9} {"Trailer":<8} {"Retriver":<9} {"Excluded":<9}') print(f'{"*":<9} {"*":<8} {"*":<9} {"*":<9}')
修改后输出效果:
Progress Trailer Retriver Excluded * * * *
补充说明
- 宽度数值可以根据你需要的列间距自行调整,只要保证同一列的标题和内容使用相同的宽度设置即可
- 占位符里的
<代表左对齐,需要右对齐可以换成>,居中对齐用^
内容的提问来源于stack exchange,提问作者Himasha
相关产品推荐
相关产品推荐

