Как я могу редактировать/переименовывать ключи во время json.load в python?

У меня есть файл json(~3Gb ), которые мне нужно загрузить в mongodb. Довольно много ключей 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 должен перебирать все ключи, если ключ содержит точку, создавать копию, заменять точку пробелом и возвращать копию. Создал копию dataPart, так как не уверен, смогу ли я перебирать ключи dataPart и одновременно вставлять/удалять пары ключ-значение.

Кажется, здесь ошибка, все json-ключи с точкой в ​​них не редактируются. Я не очень понимаю, как работает json.load. Также я новичок в python (, использую его менее недели )

-. 121 ---1036777- Можно ли получить доступ к закрытию функции? Функция в javascript формирует замыкание, сохраняя (скрытую )ссылку на объемлющую ее область. Можно ли получить к нему доступ программно, когда у нас есть функция (в качестве значения переменной )? Настоящее...

Функция в javascript формирует замыкание, сохраняя (скрытую )ссылку на объемлющую ее область.

Можно ли получить к нему доступ программно, когда у нас есть функция (в качестве значения переменной )?

Настоящая цель является теоретической, но демонстрация может состоять в том, чтобы перечислить свойства замыкания.

var x = (function(){
   var y = 5;
   return function() {
       alert(y);
   };
})();

//access y here with x somehow
9
задан Denys Séguret 17 December 2014 в 08:54
поделиться