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

如何用Python替换CSV文件中的逗号为分号且保留结构

解决CSV文件中替换逗号为分号且不破坏结构的问题

你的核心问题是直接全局替换逗号会把CSV的单元格分隔符和单元格内的逗号一并替换,导致文件结构损坏。正则或字符串替换无法区分这两种逗号,必须用专门的CSV处理工具。

正确解决方案:使用Python内置csv模块

csv模块能自动识别CSV的结构,区分单元格分隔符和单元格内的逗号,完美解决替换问题。代码如下:

import csv

# 原文件路径和新文件路径
csv_path = r"test.csv"
new_csv_path = r"new_test.csv"

# 读取原CSV,解析所有单元格(自动处理含逗号的单元格)
with open(csv_path, 'r', newline='', encoding='utf-8') as infile:
    reader = csv.reader(infile, delimiter=',')
    rows = list(reader)

# 写入新CSV,用分号作为单元格分隔符
with open(new_csv_path, 'w', newline='', encoding='utf-8') as outfile:
    # QUOTE_MINIMAL会自动给包含分号/逗号的单元格加引号,避免混淆
    writer = csv.writer(outfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
    writer.writerows(rows)

代码说明

  • csv.reader:按逗号分隔符正确解析每个单元格,哪怕单元格内包含逗号(比如"张三, 李四"会被识别为单个单元格)
  • csv.writer:指定delimiter=';',输出时用分号分隔单元格;如果单元格内本身有分号或逗号,会自动用引号包裹,避免结构混乱
  • newline='':遵循csv模块官方推荐,避免跨平台换行符问题
  • encoding='utf-8':保证文件编码一致,防止乱码

原代码的问题

你之前用re.sub全局替换所有逗号,会把CSV的单元格分隔符也替换掉,比如原文件中姓名,描述,描述是喜欢苹果,香蕉,替换后会变成姓名;描述和喜欢苹果;香蕉,直接把一个单元格拆成两个,彻底破坏CSV结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:50:26