如何用Python将含文本与数字的列表按对齐列写入TXT文件?
解决Python写入TXT文件列对齐问题
你当前用多个制表符(\t)拼接内容导致列错位,核心原因是制表符按固定间隔跳转,无法适配不同长度的文本。改用字符串格式化固定列宽就能解决这个问题,具体调整如下:
方法思路
通过格式化字符串为每一列指定固定宽度,第一列左对齐(保证文本靠左),数字列右对齐(保证小数点对齐),单位列按需设置宽度,这样不管文本长度如何,每列都会占据固定字符空间,自然对齐。
修改后的代码
with open('C:\\Users\\---\\OneDrive\\Desktop\\Report.txt', 'w') as f: f.write("\t\t\t\tFALIZ CONESH FARAND COMPANY \n"+"\t\t\t\t Address\n" "THESE ARE PARAMETERS CALCULATED FOR A HOUSING INCLUDING FILTER ELEMENTS \n"+ " \n"+ "\t\t\t\t\t HOUSING PARAMETERS: \n") # 自动计算第一列文本的最大长度,加2个空格余量避免挤在一起 max_col1_len = max(len(str(item)) for item in Parameters[0]) # 遍历参数列表,用enumerate同时获取索引和文本 for i, line in enumerate(Parameters[0]): number = Parameters[1][i] unit = Parameters[2][i] # 格式化:第一列左对齐占(max_col1_len+2)位,数字右对齐占8位,单位直接拼接 formatted_line = f"{line:<{max_col1_len+2}} {number:>8} {unit}" f.write(formatted_line + '\n')
关键说明
- 自动计算第一列宽度:
max_col1_len会遍历第一列所有文本,取最长的长度,再加2个空格作为余量,确保文本和数字之间有足够间隔,比固定宽度更灵活。 - 格式化语法:
{line:<{max_col1_len+2}}:左对齐文本,总长度为max_col1_len+2,不足的地方用空格填充。{number:>8}:右对齐数字,总长度8位,这样不同位数的数字(比如0.0和0.02)会自动对齐小数点。
- 替代手动索引维护:用
enumerate遍历第一列,同时拿到索引i,比手动写i=i+1更简洁不易出错。
如果你不想自动计算宽度,也可以直接指定固定值(比如{line:<25}),只要这个值大于第一列最长文本的长度即可。
内容的提问来源于stack exchange,提问作者Davood Barzegari
相关产品推荐
相关产品推荐

