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

Python实现CSV转TSV:如何处理字段内包含逗号的情况

如何安全地将CSV转换为TSV(避免破坏字段内的逗号)

当然有靠谱的办法!你一开始用re.sub(',', '\t', csv)直接替换的思路,确实会踩「字段内包含逗号」的坑——毕竟CSV里用双引号包裹的字段里的逗号是内容的一部分,不是分隔符。专业的CSV处理还是得靠专门的解析工具来搞定,以Python为例,内置的csv模块就能完美解决这个问题:

处理字符串形式的CSV内容

如果你的CSV是字符串格式,可以这样处理:

import csv

# 示例CSV内容
csv_str = """dept_no,dt,hello
1,20180411,hello its me
2,20180412,here has tab
3,20180412,"here, is, commas"
"""

# 用csv.reader解析,自动识别带引号的字段
tsv_rows = []
for row in csv.reader(csv_str.splitlines()):
    # 将每行的字段用制表符连接
    tsv_rows.append('\t'.join(row))

# 合并成完整的TSV字符串
tsv_str = '\n'.join(tsv_rows)
print(tsv_str)

运行后输出的TSV会完整保留第三行字段内的逗号,结果如下:

dept_no	dt	hello
1	20180411	hello its me
2	20180412	here has tab
3	20180412	here, is, commas

处理文件形式的CSV

如果是处理本地CSV文件,直接用csv.writer指定制表符作为分隔符更高效:

import csv

# 读取CSV文件并写入TSV文件
with open('input.csv', 'r', newline='') as in_file, open('output.tsv', 'w', newline='') as out_file:
    # 创建CSV读取器
    csv_reader = csv.reader(in_file)
    # 创建TSV写入器,指定分隔符为制表符
    tsv_writer = csv.writer(out_file, delimiter='\t')
    # 逐行写入
    tsv_writer.writerows(csv_reader)

为什么不推荐用正则?

正则表达式很难精准区分「作为分隔符的逗号」和「字段内的逗号」——比如如果字段里出现了转义的引号、嵌套引号等复杂情况,正则的写法会变得极其繁琐且容易出错。而csv模块是专门为CSV格式设计的,能处理所有标准CSV的边缘情况,可靠性高得多。

内容的提问来源于stack exchange,提问作者Sophie.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:23:33