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

У меня есть файл json(~3 ГБ ), которые мне нужно загрузить в 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- rails -отключить тег выбора Я пытаюсь отключить тег select. Варианты для заполнения наших не атрибутов базы данных, а массива целых чисел, поэтому коллекция _select, похоже, не работает в этой ситуации. техника 1 :...

Я пытаюсь отключить тег select. Варианты для заполнения наших не атрибутов базы данных, а массива целых чисел, поэтому коллекция _select, похоже, не работает в этой ситуации.

техника 1:

select_tag(:zev_qty, options_for_select(display_quantity(@order_subject_supplies_request.site), {:disabled => display_quantity(@order_subject_supplies_request.site)}))

def display_quantity(site)
  if site
    site.open_site? ? [[0,0],[1,1],[2,2]] : [[0,0],[1,1]]
  else
    []
  end
end

Вышеупомянутое не то, что я хочу. Он отключает параметры, а не тег select.

техника 2:

f.select(:zev_qty, display_quantity(@order_subject_supplies_request.site), {:disabled => true})
  def display_quantity(site)
    if site
      site.open_site? ? [0,1,2] : [0,1]
    else
      []
    end
  end

Вышеуказанное не работает. Ни одна из опций не отключена.

Хотя правильные значения отображаются в раскрывающемся списке в обоих случаях, тег select не отключен, и обратите внимание, что в этом примере я просто установил для параметра disabled значение true,но, конечно, я бы условно отключил теги select.

5
задан JohnMerlino 25 June 2012 в 15:58
поделиться