Python实现文本表格列字符串对齐与间距调整(附完整代码)
问题根源
当前代码列错位、分隔符不匹配的核心原因有三点:
- 所有分隔符长度硬编码为33字符,和实际拼接后表头、数据行的总宽度不匹配
- 列内容拼接时仅在末尾加固定单个空格,没有按统一列宽做填充,长度差异大的内容(比如长度为7的
Tuesday和长度为2的03)会直接挤偏后续列的位置 - 表头、数据行的竖线分隔位置没有统一对齐标准,完全靠手动拼接空格控制位置,极易错位
修复方案
提前给每列设定固定显示宽度,所有列内容统一按宽度做左对齐补空格,再基于实际表格总宽度自动生成分隔符,完全移除硬编码的长度值,从根源避免错位。
可直接运行的修复后代码:
# 统一配置列名、对应固定显示宽度,可根据实际需求调整 COL_CONFIG = [ ("Day", 10), ("Month", 7), ("Year", 6), ("Hour", 6), ("Minute", 8) ] # 自动计算表格内部总宽度,无需手动数长度 TABLE_INNER_WIDTH = sum(width for _, width in COL_CONFIG) + len(COL_CONFIG) # 自动生成各类边框/分隔符 top_border = '_' * (TABLE_INNER_WIDTH + 2) + '\n' sep_normal = '|' + '-' * TABLE_INNER_WIDTH + '|\n' sep_append = '|' + '=' * TABLE_INNER_WIDTH + '|\n' bottom_border = '|' + '^' * TABLE_INNER_WIDTH + '|' # 测试数据 t = ['Tuesday', 'July', '2022', '03', '06'] def build_table_row(content_list): """按统一列宽拼接标准表格行""" row_cells = [] for content, (_, col_width) in zip(content_list, COL_CONFIG): # 内容左对齐,自动补空格到对应列宽 row_cells.append(str(content).ljust(col_width)) return f"|{'|'.join(row_cells)}|\n" # 生成标准表头 header_row = build_table_row([col_name for col_name, _ in COL_CONFIG]) # 文件读写逻辑 try: with open('time.txt', 'r', encoding='utf-8') as f: content = f.readlines() except FileNotFoundError: with open('time.txt', 'w', encoding='utf-8') as f: f.write('pass') with open('time.txt', 'r', encoding='utf-8') as f: content = f.readlines() if not content or content[0] != top_border: # 首次生成/表格格式异常时,重写为标准格式 with open('time.txt', 'w', encoding='utf-8') as f: first_data_row = build_table_row(t) f.write(top_border + header_row + sep_normal + first_data_row + bottom_border) else: # 已有标准表格时追加新记录 with open('time.txt', 'r+', encoding='utf-8') as f: saved_records = f.readlines()[:-1] # 移除末尾底部边框,方便追加 f.seek(0) f.truncate() new_data_row = build_table_row(t) f.writelines(saved_records + [sep_append, new_data_row, bottom_border])
修复后特性
- 所有列严格对齐,不会出现内容长短不一导致的错位问题,Minute列会自动按宽度补空格对齐
- 所有分隔符、边框长度自动匹配表格实际宽度,不会出现长度不匹配的问题
- 后续需要调整列宽、新增/删除列时,仅需修改
COL_CONFIG配置即可,无需调整其他拼接逻辑 - 首次写入、多次追加写入的表格格式完全统一
内容的提问来源于stack exchange,提问作者user19498579
相关产品推荐
相关产品推荐

