如何使用Python读取文本文件并格式化输出为指定带分隔线的表格样式
实现方案
提供两种常用实现方案,可根据使用环境选择:
方案1:Python实现(跨平台通用)
先读取全量内容计算每列最大宽度,再按宽度对齐输出,将代码中input.txt替换为你的实际文件路径即可:
with open("input.txt", "r", encoding="utf-8") as f: lines = [line.strip().split() for line in f if line.strip()] # 计算每一列的最大宽度 col_widths = [max(len(row[i]) for row in lines) for i in range(len(lines[0]))] # 生成上下分隔线 sep_line = "|".join("-" * w for w in col_widths) # 逐行输出内容 print(f"{lines[0][0]:<{col_widths[0]}}|{'|'.join(f'{col:<{col_widths[i+1]}}' for i, col in enumerate(lines[0][1:]))}") print(sep_line) for row in lines[1:]: print(f"{row[0]:<{col_widths[0]}}|{'|'.join(f'{col:<{col_widths[i+1]}}' for i, col in enumerate(row[1:]))}") print(sep_line)
方案2:awk实现(适合Linux/macOS终端直接执行)
直接在终端运行以下命令即可,替换input.txt为实际文件路径:
awk '{ for(i=1;i<=NF;i++) { if(length($i) > max_len[i]) max_len[i] = length($i) row[NR][i] = $i } } END { # 输出表头 printf "%-"max_len[1]"s", row[1][1] for(i=2;i<=NF;i++) printf "|%-"max_len[i]"s", row[1][i] print "" # 输出上分隔线 printf "%s", sprintf("%-"max_len[1]"s", "") | "tr ' ' '-'" for(i=2;i<=NF;i++) printf "|%s", sprintf("%-"max_len[i]"s", "") | "tr ' ' '-'" print "" # 输出数据行 for(n=2;n<=NR;n++) { printf "%-"max_len[1]"s", row[n][1] for(i=2;i<=NF;i++) printf "|%-"max_len[i]"s", row[n][i] print "" } # 输出下分隔线 printf "%s", sprintf("%-"max_len[1]"s", "") | "tr ' ' '-'" for(i=2;i<=NF;i++) printf "|%s", sprintf("%-"max_len[i]"s", "") | "tr ' ' '-'" print "" }' input.txt
内容的提问来源于stack exchange,提问作者Kangar
相关产品推荐
相关产品推荐

