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

如何不使用eval将CSV读取的含重复双引号Python字符串转为字典

问题描述

现有如下格式的字符串:

"{""netPrice"":251.6,""totalPrice"":299.4,""calculatedTaxes"":[{""tax"":47.8,""taxRate"":19.0,""price"":251.6,""extensions"":[]}],""taxRules"":[{""taxRate"":19.0,""percentage"":100.0,""extensions"":[]}],""positionPrice"":232.0,""rawTotal"":299.4,""taxStatus"":""net""}"

需要将其转换为{'netPrice': 251.6, 'totalPrice':299.4, ...}格式的字典,但字符串内存在重复双引号,直接使用eval和json相关方法均无法正常解析。
当前读取CSV文件的代码如下:

with open('order.csv', 'r') as csv_datei:
    for row in csv_datei:

已知无法直接获取格式更规范的数据源,读取到的每行row就是上述带重复双引号的字符串,需要找到正确转换为字典的实现方式。

解决方案

字符串里的重复双引号是CSV格式的标准转义规则:CSV中如果字段本身被双引号包裹,字段内部的双引号会用两个连续双引号表示。直接逐行遍历文件拿到的是未做CSV格式解析的原始行内容,才会出现双引号重复的问题。
有两种可落地的实现方案:

  • 方案1:使用Python标准csv模块读取(优先推荐)
    不要手动逐行读取文件,用内置csv模块做解析,它会自动按照CSV规范处理转义字符,直接拿到合法的JSON字符串,后续直接用json模块解析即可,不会出现转义错误:
    import csv
    import json
    
    with open('order.csv', 'r', encoding='utf-8') as csv_datei:
        csv_reader = csv.reader(csv_datei)
        # 如果文件有表头,取消下行注释跳过表头
        # next(csv_reader)
        for row in csv_reader:
            # 按实际存储JSON字符串的列索引取值,比如JSON存在第2列就取row[1]
            json_content = row[JSON字符串所在列的索引]
            result_dict = json.loads(json_content)
            print(result_dict)
    
  • 方案2:手动处理字符串转义(适用于已经拿到原始字符串、无法重新读取文件的场景)
    先剥掉字符串最外层包裹的一对双引号,再把内部连续的两个双引号替换为单个双引号,就能得到合法的JSON格式字符串,之后正常解析即可:
    import json
    
    # raw_str为逐行读取到的原始字符串
    raw_str = '"{""netPrice"":251.6,""totalPrice"":299.4,""calculatedTaxes"":[{""tax"":47.8,""taxRate"":19.0,""price"":251.6,""extensions"":[]}],""taxRules"":[{""taxRate"":19.0,""percentage"":100.0,""extensions"":[]}],""positionPrice"":232.0,""rawTotal"":299.4,""taxStatus"":""net""}"'
    # 去除最外层双引号
    trimmed_str = raw_str.strip('"')
    # 替换转义的双引号
    valid_json = trimmed_str.replace('""', '"')
    # 解析为字典
    result_dict = json.loads(valid_json)
    print(result_dict)
    

注意:禁止使用eval做字符串解析,存在任意代码执行的安全风险,统一使用json.loads做JSON格式解析即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:30:48