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

如何将两个CSV文件按交替行合并为新CSV文件?

实现两个CSV文件交替行合并的方法

当然可以实现,下面提供两种常用的解决方案:

Python 脚本实现

这是一个直观且易修改的方案,适合需要自定义逻辑的场景:

with open('csv1.csv', 'r') as f1, open('csv2.csv', 'r') as f2, open('output.csv', 'w') as out_file:
    # 读取并写入表头(仅保留一份)
    header = f1.readline().strip()
    out_file.write(f"{header}\n")
    # 跳过第二个文件的表头
    f2.readline()
    
    # 读取两个文件的内容行
    lines_csv1 = f1.read().splitlines()
    lines_csv2 = f2.read().splitlines()
    
    # 交替写入行
    max_lines = max(len(lines_csv1), len(lines_csv2))
    for i in range(max_lines):
        if i < len(lines_csv1):
            out_file.write(f"{lines_csv1[i]}\n")
        if i < len(lines_csv2):
            out_file.write(f"{lines_csv2[i]}\n")

这个脚本会优先写入第一个文件的行,再写第二个文件的对应行;若其中一个文件行数更多,剩余的行会直接追加到输出文件末尾。

awk 命令行实现

适合熟悉Linux/Unix命令行的用户,无需编写脚本:

awk '
    NR == 1 { print; next }
    FNR == 1 { next }
    { arr[FILENAME][FNR-1] = $0 }
    END {
        max_len = length(arr["csv1.csv"]) > length(arr["csv2.csv"]) ? length(arr["csv1.csv"]) : length(arr["csv2.csv"])
        for (i=1; i<=max_len; i++) {
            if (arr["csv1.csv"][i]) print arr["csv1.csv"][i]
            if (arr["csv2.csv"][i]) print arr["csv2.csv"][i]
        }
    }
' csv1.csv csv2.csv > output.csv

命令说明:

  • NR == 1:仅打印第一个输入文件的表头
  • FNR == 1:跳过第二个文件的表头
  • 将两个文件的内容行分别存入数组
  • 最后循环交替打印两行,自动处理行数不一致的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:20:35