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

Python读取CSV文件按账号分组并为每个账号生成单独CSV文件

解决Python按账号拆分CSV文件的方案

实现思路

  • 用Python内置csv模块处理CSV文件,无需安装第三方依赖
  • 先读取原文件表头,每个拆分后的子文件都保留相同表头
  • 用字典缓存已创建的账号文件对象,避免重复打开关闭文件、重复写入表头
  • 遍历每一行数据,按Account字段值分发到对应文件

完整可运行代码

import csv

# 配置参数,替换为你自己的文件路径
ORIGIN_FILE = "test.csv"
# 输出文件命名规则,{account}会自动替换为实际账号值
OUTPUT_FILE_PATTERN = "account_{account}.csv"

# 缓存已打开的文件对象和csv写入器
file_handles = {}
csv_writers = {}

try:
    with open(ORIGIN_FILE, 'r', newline='', encoding='utf-8') as origin_f:
        # 读取CSV内容,根据你的文件分隔符调整参数:
        # 逗号分隔不用加delimiter参数
        # 制表符分隔加 delimiter='\t'
        # 多空格分隔加 delimiter=' ', skipinitialspace=True
        reader = csv.DictReader(origin_f, delimiter=' ', skipinitialspace=True)
        # 遍历每一行数据
        for row in reader:
            account = row['Account'].strip()
            # 账号没有对应文件时,创建新文件并写入表头
            if account not in csv_writers:
                f = open(OUTPUT_FILE_PATTERN.format(account=account), 'w', newline='', encoding='utf-8')
                file_handles[account] = f
                writer = csv.DictWriter(f, fieldnames=reader.fieldnames)
                writer.writeheader()
                csv_writers[account] = writer
            # 写入当前行到对应账号文件
            csv_writers[account].writerow(row)
finally:
    # 统一关闭所有打开的子文件
    for f in file_handles.values():
        f.close()

常见调整说明

  • 编码报错时,把代码里的encoding='utf-8'替换为encoding='gbk'即可适配Windows系统导出的CSV文件
  • 输出文件名可以自定义修改OUTPUT_FILE_PATTERN,比如改成"{account}_用户明细.csv"都可以
  • 运行完成后所有拆分后的文件会生成在脚本运行的同级目录下,每个文件仅包含对应账号的全部行数据,保留原表头格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:04