Python中处理含逗号的CSV字段,避免列拆分并格式化输出
解决CSV字段含逗号导致格式拆分的问题
核心思路
先读取原始CSV并处理名称字段:清理多余引号、将逗号替换为空格,再用标准CSV写入工具输出,就能避免列被错误拆分。
完整代码实现
import csv # 1. 读取并处理原始数据 processed_rows = [] with open("input.csv", "r", encoding="utf-8") as in_file: # 指定单引号为字段包裹符,避免内部逗号被当成分隔符 reader = csv.reader(in_file, delimiter=",", quotechar="'") for row in reader: # 提取数字列 number = row[0] # 处理名称列:清理双引号,替换逗号为空格 raw_name = row[1] cleaned_name = raw_name.replace('""', "").replace(",", " ") # 收集处理后的行 processed_rows.append([number, cleaned_name]) # 2. 写入处理后的CSV with open("output.csv", "w", encoding="utf-8", newline="") as out_file: writer = csv.writer(out_file, delimiter=",", lineterminator="\n") writer.writerows(processed_rows)
关键步骤说明
- 读取时的引号处理:通过
quotechar="'"告诉CSV阅读器,单引号包裹的内容是一个完整字段,不会把内部的逗号当成列分隔符。 - 名称字段清理:原始名称是
""HO,inc""格式,用replace('""', "")去掉多余双引号,再用replace(",", " ")把逗号换成空格。 - 写入规范:添加
newline=""是Python CSV模块的最佳实践,避免Windows系统下生成的CSV出现多余空行。
处理后输出示例
输出的CSV内容为:
123,HO inc 456,baba the
用竖线分隔展示就是你期望的格式:
123 | HO inc
456 | baba the
内容的提问来源于stack exchange,提问作者pudianna
相关产品推荐
相关产品推荐

