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

Python实现CSV转JSON时删除嵌套字典指定键的操作失效问题

错误原因定位

你之前的删除操作失效,核心是操作对象的层级搞错了:

  • 外层的data字典,它的顶层键是每个CSV行里ipadd对应的取值(比如示例中的some_random_key、some_random_key2)
  • 你要移除的number、ipadd两个字段,是每个外层键所对应的内层子字典的字段,根本不是外层data的顶层键
  • 你之前写的del data['number']操作的是外层字典,既找不到叫number的顶层键(会直接报KeyError),也根本碰不到内层子字典里的目标字段,自然达不到预期效果。

你担心提前删除CSV行里的ipadd字段会导致没法生成外层键的问题完全可以规避:先把ipadd的值提取出来当外层键,再对行数据做过滤/删除操作即可,两者完全不冲突。

修正实现

方案1(推荐:字典推导式过滤)

这种写法可扩展性强,后续要调整需要排除的字段,只要修改排除集合即可,不需要重复写删除语句:

import csv, json

def make_json(csvFilePath, jsonFilePath):
    data = {}
    # 集中配置需要从最终JSON中移除的字段
    EXCLUDE_FIELDS = {'number', 'ipadd'}
    with open(csvFilePath, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)
        for rows in csvReader:
            # 第一步:先提取ipadd值作为外层JSON的键,此时还未删除该字段,可正常取值
            outer_key = rows['ipadd']
            # 第二步:对当前行数据做过滤,去掉配置的排除字段,生成干净的子字典
            filtered_row = {
                field: value 
                for field, value in rows.items() 
                if field not in EXCLUDE_FIELDS
            }
            # 第三步:把过滤后的子字典存入外层结果
            data[outer_key] = filtered_row
    # 写入最终JSON,ensure_ascii=False避免非英文字符被转义
    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        jsonf.write(json.dumps(data, indent=4, ensure_ascii=False))


csvFilePath = r'csvfile.csv'
jsonFilePath = r'demo.json'
make_json(csvFilePath, jsonFilePath)
  • 小提示:原代码中导入的pandas、os模块在当前逻辑里没有被实际调用,属于冗余导入,可以直接移除精简程序,不会影响运行效果。

方案2(沿用原本的del写法)

如果习惯用del删除字段的写法,只要把删除操作的目标从外层data改成每一行的rows字典即可,对应循环内的逻辑修改为:

for rows in csvReader:
    key = rows['ipadd']
    # 直接对当前行的字典做删除,不要操作外层data
    del rows['number']
    del rows['ipadd']
    data[key] = rows
最终输出效果

两种方案运行后,生成的JSON结构和你期望的完全一致:

{
    "some_random_key": {
        "version": "0",
        "name": "superman",
        "devicename": "0",
        "osversion": "0"
    },
    "some_random_key2": {
        "version": "0",
        "name": "batman",
        "devicename": "0",
        "osversion": "0"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 12:57:04