¿Cómo puedo editar / renombrar claves durante json.load en python?

Tengo un archivo json (~ 3Gb) que necesito cargar en mongodb. Algunas de las claves de json contienen a. (punto), lo que hace que falle la carga en mongodb. Quiero cargar el archivo json y editar los nombres de las claves en el proceso, por ejemplo, reemplazar el punto con un espacio vacío. Usando el siguiente código de 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) 

El object_hook llamado RemoveDotKey debe iterar sobre todas las claves, si una clave contiene un punto, crea una copia, reemplaza el punto por un espacio y devuelve la copia. Creé una copia de dataPart, ya que no estoy seguro de si puedo iterar sobre las claves de dataPart e insertar / eliminar pares de valores de clave al mismo tiempo.

Parece que hay un error aquí, todas las teclas json con un punto en ellas no se editan. No estoy muy seguro de cómo funciona json.load. También soy nuevo en Python (lo he estado usando por menos de una semana)

Casi lo tienes:

 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) 

Estaba devolviendo un diccionario dentro de su bucle, así que solo modificaría una clave. Y no necesita hacer una copia de los valores, simplemente cambie el nombre de las claves.