我有一个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新手(使用不到一周)
你差点就吃到了:
你在循环中返回了一个字典,所以只修改了一个键。不需要复制值,只需重命名键即可。
相关问题 更多 >
编程相关推荐