You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用制表符\t格式化打印列表出现对齐异常如何解决

问题原因

对齐异常是\t(制表符)的工作机制导致的:

  • 制表符默认会将光标跳转到间隔为8个字符的下一个制表位,如果前一个字段的内容长度刚好超过了某个制表位,后续的制表符跳转位置就会和其他行不一致,自然就错位了。比如"Paypal"长度为6,打完后剩余2个字符到下一个制表位,\t补2个空格就到下一位;而"Apple"长度为5,打完后剩余3个字符到下一个制表位,\t补3个空格,两列的起始位置就对不齐了。

解决方法

方法1:使用f-string固定列宽(推荐,原生实现无需额外依赖)

提前给每一列设定固定的输出宽度,不管内容长度多少都占对应宽度,就能保证对齐:

number = ['No.', 1  , 2  , 3 , 4 , 5 , 6]
company =['Company' , 'Microsoft' , 'Amazon' , 'Paypal' , 'Apple' , 'Fastly' , 'Square']
cap = ['Cap' , 'Mega' , 'Mega' , 'Large' , 'Large' , 'Mid' , 'Mid']
qty = ['Qty', '100' , '5' , '80' , '100' , '30' , '30']
bought_price = ['Bought Price' , '188' , '1700' , '100' , '60' , '40' , '40']
market_price = ['Market Price' , '207' , '3003' , '188' , '110' , '76' , '178' ]

for a,b,c,d,e,f in zip(number, company, cap,qty,bought_price, market_price ): 
    # 每列分别设定固定宽度,<表示左对齐,后面的数字是宽度值,可以根据自己需求调整
    print(f"{a:<5}{b:<15}{c:<8}{d:<8}{e:<15}{f:<15}")

输出效果:

No.  Company        Cap     Qty     Bought Price   Market Price   
1    Microsoft      Mega    100     188            207            
2    Amazon         Mega    5       1700           3003           
3    Paypal         Large   80      100            188            
4    Apple          Large   100     60             110            
5    Fastly         Mid     30      40             76             
6    Square         Mid     30      40             178  

方法2:使用第三方库tabulate(更省心,适合复杂表格输出)

如果经常需要输出格式化表格,可以安装tabulate库,自动计算列宽对齐,不需要手动设置宽度:

  1. 先安装库:pip install tabulate
  2. 代码示例:
from tabulate import tabulate

number = ['No.', 1  , 2  , 3 , 4 , 5 , 6]
company =['Company' , 'Microsoft' , 'Amazon' , 'Paypal' , 'Apple' , 'Fastly' , 'Square']
cap = ['Cap' , 'Mega' , 'Mega' , 'Large' , 'Large' , 'Mid' , 'Mid']
qty = ['Qty', '100' , '5' , '80' , '100' , '30' , '30']
bought_price = ['Bought Price' , '188' , '1700' , '100' , '60' , '40' , '40']
market_price = ['Market Price' , '207' , '3003' , '188' , '110' , '76' , '178' ]

# 把所有列打包成表格数据,第一行作为表头
table = list(zip(number, company, cap, qty, bought_price, market_price))
print(tabulate(table, headers='firstrow'))

内容的提问来源于stack exchange,提问作者Chaengie1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:24:02