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

使用csv.writer向CSV追加数据时部分字段被自动加双引号问题求助

问题根因
  • 被自动添加双引号的两个字段34,307.65、2,272.25本身包含逗号,Python的csv.writer默认使用逗号作为字段分隔符,为了避免字段内部的逗号被误识别为字段分割标记,模块会自动给包含分隔符的字段包裹双引号,这是符合CSV格式标准的正常行为,不是程序异常。
  • 写入前打印看不到引号是因为引号是写入CSV文件时csv模块动态添加的,不会修改你传入的原始数据内容。
可选解决方案

方案1:移除字段内部的千位分隔符(最推荐)

价格字段里的逗号是千位分隔符,属于格式化显示用的内容,存储时可以先处理为纯数字格式,避免字段内出现逗号:

# 处理示例:对价格字段做格式化,移除千位逗号
def insert_data(self, data):
    processed_data = []
    for item in data:
        # 判断是不是带千位分隔符的价格字符串,可按需调整判断逻辑
        if isinstance(item, str) and ',' in item and '.' in item:
            item = item.replace(',', '')
        processed_data.append(item)
    with open ('tracker_file.csv', 'a') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow(processed_data)

该方案兼容性最好,后续读取CSV时不需要额外处理就能直接拿到数值类的价格数据。

方案2:修改CSV字段分隔符

如果需要保留字段内的逗号,可以更换分隔符(比如用制表符\t),避免和字段内容冲突:

with open ('tracker_file.csv', 'a') as csv_file:
    # 指定制表符作为分隔符
    writer = csv.writer(csv_file, delimiter='\t')
    writer.writerow(data)

方案3:关闭自动引号逻辑

如果必须使用逗号作为分隔符、保留字段内逗号,同时不希望出现双引号,可以修改quoting参数关闭自动加引号的逻辑,注意必须同时指定转义字符:

import csv
with open ('tracker_file.csv', 'a') as csv_file:
    writer = csv.writer(csv_file, quoting=csv.QUOTE_NONE, escapechar='\\')
    writer.writerow(data)

注意:该方案写入的CSV读取时也需要配套设置相同的转义参数,否则会出现字段拆分错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:30:00