Mongodb'a yüklemem gereken bir json dosyasına (~ 3Gb) sahibim. Oldukça az sayıda json anahtarı içerir. (nokta), bu da yükün mongodb'a dönüşmesine neden olur. Json dosyasını yüklemek ve işlemdeki anahtar isimleri düzenlemek istiyorum, diyelim ki boş bir alan ile nokta değiştirin.Python'da json.load sırasında tuşları nasıl düzenleyebilir/yeniden adlandırabilirim?
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 tüm tuşların üzerinde yineleme gerektiğini denilen object_hook, bir anahtar bir nokta içeren aşağıdaki piton kodu kullanarak, bir kopyasını oluşturmak boşlukla nokta değiştirin ve kopya dönün. DataPart'ın tuşlarının üzerinde yineleme yapıp yapamayacağımı ve aynı zamanda anahtar/değer çiftlerini ekleyip silemeyeceğime emin olmak için dataPart'ın bir kopyasını oluşturdum.
Burada bir hata var gibi görünüyor, içinde bir nokta bulunan tüm json anahtarları düzenlenmiyor. Json.load'un nasıl çalıştığından emin değilim. Ayrıca piton için yeni
Bu kod, üzerinde yineleme yaparken sözlük güncellenirken sorunlara neden olmaz mı? Ben iterkeys() ' – Duncan
Hmm yerine anahtarların bir listesini yapmak gerektiğini düşündüm, haklısın, kodu güncelledim. –
Nesnenin derin kopyalarını oluşturmamak, json yükleme işlemini önemli ölçüde hızlandırır ve iterkey'leri() anahtarlarla() değiştirmek yerine geçer! Sağol Ned, Duncan. – okaytee