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

如何将每行已是JSON格式的CSV文件逐行导出为独立JSON文件(解决额外引号问题)

如何将每行已是JSON格式的CSV文件逐行导出为独立JSON文件(解决额外引号问题)

嗨,这个问题我刚好碰到过!你遇到的额外引号问题,本质是因为你的CSV文件其实是把每行完整的JSON当作单个CSV字段存储的——按照CSV的格式规则,包含特殊字符(比如双引号、逗号)的字段会被双引号包裹,字段内部的双引号会被转义成两个双引号("")。你之前的代码直接按普通文本行读取,没有处理CSV的这些格式规则,所以输出时保留了这些转义和外层包裹的引号。

给你两个靠谱的解决办法,推荐用第二种,更规范省心:

方法一:用CSV模块解析(推荐)

利用Python的csv模块自动处理CSV的格式规则,它会帮你自动去掉外层包裹的引号,同时把转义的""还原成单个":

import csv

csv_file = 'path/to/my/file.csv'

with open(csv_file, mode='r') as infile:
    # 创建CSV读取器,自动处理CSV的转义规则
    reader = csv.reader(infile)
    for i, row in enumerate(reader):
        # 每行是一个列表,第一个元素就是处理后的纯JSON字符串
        json_content = row[0]
        with open(f"row_{i}.json", "w") as outfile:
            outfile.write(json_content)

这个方法最稳妥,不管你的CSV里有没有其他特殊格式(比如字段里的逗号),csv.reader都会正确解析,完全不需要你手动处理字符串替换。

方法二:手动处理字符串(适合简单场景)

如果确定你的CSV每行都被外层双引号包裹,且内部的双引号都是转义成""的情况,可以直接手动处理:

csv_file = 'path/to/my/file.csv'

with open(csv_file, mode='r') as infile:
    for i, line in enumerate(infile):
        # 去掉首尾的换行符和外层双引号
        cleaned_line = line.strip().strip('"')
        # 把转义的""替换成单个"
        json_content = cleaned_line.replace('""', '"')
        with open(f"row_{i}.json", "w") as outfile:
            outfile.write(json_content)

不过这个方法有局限性,如果某些行没有外层引号,或者存在其他CSV格式的特殊情况,可能会出错,所以优先推荐方法一。

验证效果

用你给出的示例行测试,处理后输出的JSON文件内容会和你最开始的原始JSON完全一致:

{"key1":"string_value","key2":["string_value"],"key4":integer,"key5":[{"nested_key1":"string_value","nested_key2":boolean}],"key6":integer}

备注:内容来源于stack exchange,提问作者longhorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:18:04