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

DAT转CSV时数据额外添加引号的问题排查与解决

问题原因

你的输入DAT文件本身就是标准CSV格式(字段用双引号包裹、逗号分隔),但你用了split(',')手动拆分每行,导致每个字段保留了原始的双引号(比如拆分后得到'"TOA5"'这种值)。而Python的csv.writer在写入时,会自动对包含双引号的字段进行转义处理——把单个双引号替换成两个双引号,再给整个字段套上引号,最终就出现了多层嵌套的引号。

解决方案

方案1:用csv.reader读取源文件(推荐)

既然源文件本身就是CSV格式,直接用csv.reader读取,它会自动处理引号、逗号分隔这些细节,提取出不带多余引号的字段,再用csv.writer写入即可:

import csv

with open(file_dat_new, 'r') as dat_file:
    with open(file_csv_new, 'w', newline='') as csv_file:
        csv_reader = csv.reader(dat_file)
        csv_writer = csv.writer(csv_file)
        for row in csv_reader:
            csv_writer.writerow(row)

方案2:手动去除字段首尾的引号(仅当确定字段格式固定时用)

如果坚持要手动拆分,就在处理每个字段时,用strip('"')去掉首尾的双引号:

import csv

with open(file_dat_new, 'r') as dat_file:
    with open(file_csv_new, 'w', newline='') as csv_file:
        csv_writer = csv.writer(csv_file)
        for row in dat_file:
            # 先拆分,再去掉每个字段首尾的双引号和空白字符
            row = [value.strip().strip('"') for value in row.split(',')]
            csv_writer.writerow(row)

注意:这个方案只适合所有字段都被双引号包裹的情况,如果有的字段没有引号或者内部包含逗号,会出问题,所以优先用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:57:45