gpt4 book ai didi

python - 如何在 python 中的 json.load 期间编辑/重命名键?

转载 作者:IT老高 更新时间:2023-10-28 13:11:36 24 4
gpt4 key购买 nike

我有一个需要加载到 mongodb 的 json 文件 ( ~3Gb )。相当多的 json 键包含一个 . (点),这会导致加载到 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 的 object_hook 应该遍历所有键,它包含一个点,创建一个副本,用空格替换点,然后返回副本。创建了 dataPart 的副本,因为不确定我是否可以遍历 dataPart 的键并同时插入/删除键值对。

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

最佳答案

你差点就吃完了:

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)

您在循环中返回了一个字典,因此您只需修改一个键。而且您不需要复制值,只需重命名键即可。

关于python - 如何在 python 中的 json.load 期间编辑/重命名键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com