JSON mit Python analysieren: leere Felder

8

Ich habe Probleme beim Parsen eines JSON mit Python, und jetzt stecke ich fest.
Das Problem ist, dass die Entitäten meines JSON nicht immer gleich sind. Das JSON ist etwas wie:

%Vor%

Ich kann durch den JSON gehen, zum Beispiel:

%Vor%

Das Problem kommt daher, dass der JSON manchmal nicht alle "Felder" hat, zum Beispiel das telephone -Feld, manchmal fehlt das Skript mit KeyError , weil der Schlüssel Telefon ist fehlt in diesem Eintrag.
Also, meine Frage: Wie kann ich dieses Skript ausführen und einen leeren Platz lassen, wo Telefon fehlt? Ich habe es versucht mit:

%Vor%

aber ich denke, ist nicht in Ordnung.

    
ppardoz 10.05.2013, 23:45
quelle

4 Antworten

11

Verwenden Sie dict.get anstelle von [] :

%Vor%

Oder einfach:

%Vor%

get gibt das zweite Argument zurück (Standard: None ), anstatt eine KeyError zu erhöhen, wenn der Schlüssel nicht gefunden wird.

    
Stefano Sanfilippo 10.05.2013, 23:51
quelle
8

Wenn die Daten nur an einer Stelle fehlen, dict.get kann verwendet werden, um den fehlenden Wert zu ergänzen:

%Vor%

Wenn das Problem weiter verbreitet ist, können Sie den JSON-Parser verwenden defaultdict oder ein benutzerdefiniertes Wörterbuch anstelle eines regulären Wörterbuchs. Zum Beispiel, angesichts der JSON-Zeichenfolge:

%Vor%

Analysiere es mit:

%Vor%

Als Nebenbemerkung: Wenn Sie Ihre Datensätze bereinigen und die Konsistenz erzwingen möchten, gibt es ein gutes Werkzeug namens Kwalify das Schema Validierung auf JSON (und auf YAML);

    
Raymond Hettinger 10.05.2013 23:55
quelle
0

Es gibt mehrere nützliche Wörterbuchfunktionen, mit denen Sie damit arbeiten können.

Als Erstes können Sie mit in testen, ob ein Schlüssel in einem Wörterbuch vorhanden ist:

%Vor%

get könnte auch nützlich sein; Sie können einen Standardwert angeben, wenn der Schlüssel fehlt:

%Vor%

Darüber hinaus könnten Sie in das collections.defaultdict der Standardbibliothek schauen, aber das könnte übertrieben sein.

    
Peter DeGlopper 10.05.2013 23:53
quelle
0

Zwei Möglichkeiten.

Man sollte sicherstellen, dass Ihre Wörterbücher Standard sind, und wenn Sie sie lesen, haben sie alle Felder. Der andere ist vorsichtig beim Zugriff auf die Wörterbücher.

Hier ist ein Beispiel dafür, dass Ihre Wörterbücher Standard sind:

%Vor%

Hier ein Beispiel, wie Sie beim Zugriff auf die Wörterbücher vorsichtig sein müssen:

%Vor%     
steveha 10.05.2013 23:56
quelle

Tags und Links