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

如何清理CSV文件多余逗号并将指定区域合并为单列

处理超大CSV文件的列格式修正脚本

需求说明

要批量处理文件夹中总容量300GB的拆分CSV文件,修正不符合11列格式的行:前5列和后5列保持原样,仅将中间区域的多余逗号替换为空格并合并成单列。示例如下:

输入行:84,855,648857,8787548,R,mark,one 55, power,0000081,3434,59190000,defen,six,
输出行:84,855,648857,8787548,R,mark one 55 power,0000081,3434,59190000,defen,six,

解决方案

由于文件总容量极大,必须采用逐行读取的方式避免内存溢出,以下是Python实现脚本:

核心逻辑

  • 遍历目标文件夹下所有CSV文件
  • 逐行读取文件内容,拆分后提取固定列
  • 合并中间区域的多余内容,替换逗号为空格
  • 将处理后的行写入新文件(建议先备份原文件)

代码实现

import os

def fix_csv_columns(input_dir, output_dir):
    # 创建输出目录(不存在则自动生成)
    os.makedirs(output_dir, exist_ok=True)
    
    for filename in os.listdir(input_dir):
        if not filename.endswith('.csv'):
            continue
        input_path = os.path.join(input_dir, filename)
        output_path = os.path.join(output_dir, filename)
        
        with open(input_path, 'r', encoding='utf-8') as infile, open(output_path, 'w', encoding='utf-8') as outfile:
            for line in infile:
                line = line.strip()
                if not line:
                    outfile.write('\n')
                    continue
                # 按逗号拆分所有字段
                elements = line.split(',')
                # 仅处理字段数超过11的行
                if len(elements) > 11:
                    # 提取前5列、后5列
                    first_five = elements[:5]
                    last_five = elements[-5:]
                    # 提取中间区域并合并(逗号换空格)
                    middle_part = elements[5:-5]
                    merged_middle = ' '.join(middle_part).strip()
                    # 拼接成符合要求的11列格式,保留原行末尾的逗号
                    fixed_line = ','.join(first_five + [merged_middle] + last_five) + ','
                    outfile.write(fixed_line + '\n')
                else:
                    # 字段数符合要求的行直接保留
                    outfile.write(line + '\n')
        print(f"{filename} 处理完成")

# 自定义路径使用示例
if __name__ == "__main__":
    INPUT_FOLDER = "./original_csvs"  # 替换为你的输入文件夹路径
    OUTPUT_FOLDER = "./fixed_csvs"    # 替换为你的输出文件夹路径
    fix_csv_columns(INPUT_FOLDER, OUTPUT_FOLDER)

关键注意点

  • 内存控制:逐行处理不会加载整个文件,适配超大文件场景
  • 编码兼容:若CSV使用非UTF-8编码(如GBK),请修改open函数的encoding参数
  • 数据安全:处理前务必备份原文件,避免异常导致数据丢失
  • 性能优化:文件数量极多时可尝试多进程处理,但需注意磁盘IO瓶颈
  • 边界处理:脚本默认保留字段数不足/等于11的行,可根据实际需求调整判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:45:35