在python中json.load期间如何编辑/重命名密钥?

2024-09-27 07:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个json文件(~3Gb),需要加载到mongodb中。很多json键都包含一个。(dot),导致加载到mongodb失败。我想加载json文件,并在这个过程中编辑密钥名,比如用一个空空格替换点。使用以下python代码

import json

def RemoveDotKey(dataPart):
    for key in dataPart.iterkeys():
        new_key = key.replace(".","")
        if new_key != key:
            newDataPart = deepcopy(dataPart)
            newDataPart[new_key] = newDataPart[key]
            del newDataPart[key]
            return newDataPart
    return dataPart

new_json = json.loads(data, object_hook=RemoveDotKey) 

名为RemoveDotKey的对象钩子应该遍历所有键,它是一个包含点的键,创建一个副本,用空格替换点,然后返回副本。创建了dataPart的副本,因为我不确定是否可以同时迭代dataPart的键和插入/删除键-值对。

这里似乎有一个错误,所有带点的json键都没有被编辑。我不太清楚json.load是如何工作的。我也是python新手(使用不到一周)


Tags: 文件keyjson编辑newreturn过程mongodb
1条回答
网友
1楼 · 发布于 2024-09-27 07:28:46

你差点就吃到了:

import json

def remove_dot_key(obj):
    for key in obj.keys():
        new_key = key.replace(".","")
        if new_key != key:
            obj[new_key] = obj[key]
            del obj[key]
    return obj

new_json = json.loads(data, object_hook=remove_dot_key) 

你在循环中返回了一个字典,所以只修改了一个键。不需要复制值,只需重命名键即可。

相关问题 更多 >

    热门问题