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

如何用Python从多个同格式CSV中提取含指定字符串的行至目标CSV

使用Python csv库批量提取匹配行并合并到新CSV

针对你需要从多个同格式CSV中搜索指定字符串、提取对应行合并到一个输出文件的需求,用Python的csv库就能轻松实现,以下是具体方案:

核心思路

  1. 遍历所有目标输入CSV文件
  2. 用csv.DictReader按列名读取内容,方便直接通过列名判断匹配
  3. 检查每行指定列的值是否等于目标字符串,匹配则写入输出文件
  4. 确保输出文件只写入一次表头,避免重复

完整代码实现

import csv
import os

# 自定义配置
TARGET_STR = "Bob"
SEARCH_COL = "First Name"
# 可以是具体文件列表,也可以遍历文件夹下所有CSV
INPUT_CSVs = ["file1.csv", "file2.csv"]
OUTPUT_CSV = "out.csv"

has_written_header = False

# 以追加模式打开输出文件
with open(OUTPUT_CSV, "a", newline="", encoding="utf-8") as out_f:
    writer = None
    for csv_file in INPUT_CSVs:
        with open(csv_file, "r", newline="", encoding="utf-8") as in_f:
            reader = csv.DictReader(in_f)
            # 首次执行时初始化writer并写入表头
            if not has_written_header:
                writer = csv.DictWriter(out_f, fieldnames=reader.fieldnames)
                writer.writeheader()
                has_written_header = True
            # 逐行检查,匹配则写入
            for row in reader:
                if row[SEARCH_COL] == TARGET_STR:
                    writer.writerow(row)

# 如果要批量处理文件夹下所有CSV(排除输出文件),替换INPUT_CSVs为:
# INPUT_CSVs = [f for f in os.listdir("./") if f.endswith(".csv") and f != OUTPUT_CSV]

关键细节说明

  • newline="":避免在Windows系统下写入CSV时出现多余空行
  • encoding="utf-8":保证文件编码兼容,避免乱码
  • csv.DictReader/DictWriter:通过列名操作数据,比按索引更直观,适配列顺序变化的情况
  • 追加模式"a":每次写入都会把内容加到输出文件末尾,适合批量处理多个文件
  • has_written_header标记:确保输出文件只保留一份表头,符合CSV规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:24