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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:06