如何用Python移除CSV文件双引号内的逗号?
处理CSV文件中双引号内多余逗号的Python方案
针对大体积CSV文件中双引号内存在多余逗号、手动编辑效率低的问题,推荐两种可靠的Python处理方案,均不会修改引号外的分隔逗号:
方案一:使用标准库csv模块(推荐)
csv模块原生支持CSV格式解析,能准确识别双引号包裹的字段,避免正则处理的潜在问题,且流式处理内存友好,适合大文件场景。
代码实现
import csv # 替换为你的输入输出文件路径 input_file = "source.csv" output_file = "cleaned.csv" # 逐行读取处理,避免加载整个大文件到内存 with open(input_file, "r", newline="", encoding="utf-8") as in_f, \ open(output_file, "w", newline="", encoding="utf-8") as out_f: # 初始化CSV读写器,默认适配逗号分隔、双引号包裹的格式 csv_reader = csv.reader(in_f) csv_writer = csv.writer(out_f) for row in csv_reader: # 对每个字段移除内部的逗号 processed_row = [field.replace(",", "") for field in row] csv_writer.writerow(processed_row)
说明
- csv.reader会自动将每行拆分为独立字段(即使字段内包含逗号),比如示例中第二行会被拆分为
["A", "Agilent Technologies, Inc.", "null", "NYSE"] - 处理后的字段会被csv.writer自动按CSV规范格式化,必要时用双引号包裹,保证输出文件格式正确
- 流式处理逻辑不会占用过多内存,适合GB级别的大文件
方案二:使用正则表达式(适合简单场景)
如果你的CSV文件不存在嵌套双引号(即字段内没有转义的""),可以用正则匹配双引号内的内容并替换逗号。
代码实现
import re input_file = "source.csv" output_file = "cleaned.csv" # 匹配双引号内的非引号内容(仅适用于无嵌套引号的场景) quote_pattern = re.compile(r'"([^"]+)"') def remove_comma(match_obj): # 取出引号内的内容,替换逗号后重新包裹双引号 return '"' + match_obj.group(1).replace(",", "") + '"' with open(input_file, "r", encoding="utf-8") as in_f, \ open(output_file, "w", encoding="utf-8") as out_f: for line in in_f: cleaned_line = quote_pattern.sub(remove_comma, line) out_f.write(cleaned_line)
注意事项
- 若CSV字段中存在转义双引号(如
"He said ""Hello""", Inc."),正则会匹配错误,此时优先使用方案一
内容的提问来源于stack exchange,提问作者dean009
相关产品推荐
相关产品推荐

