Was ist der beste Weg, um große JSON-Listen in Python zu laden?

Ich habe Zugriff auf einen Satz von Dateien (ca. 80-800 MB). Leider gibt es in jeder Datei nur eine Zeile. Die Zeile enthält genau ein JSON-Objekt (eine Liste der Listen). Was ist der beste Weg, um es in kleinere JSON-Objekte zu laden und zu analysieren?

2 Solutions collect form web for “Was ist der beste Weg, um große JSON-Listen in Python zu laden?”

Hier ist schon ein ähnlicher Beitrag. Hier ist die Lösung, die sie vorgeschlagen haben:

import json with open('file.json') as infile: o = json.load(infile) chunkSize = 1000 for i in xrange(0, len(o), chunkSize): with open('file_' + str(i//chunkSize) + '.json', 'w') as outfile: json.dump(o[i:i+chunkSize], outfile) 

Wenn du versuchst zu vermeiden, die ganze Liste in den Speicher zu laden, kannst du die Datei als Text zuerst verarbeiten:

Verwenden Sie einen Stapel, um das Öffnen und Schließen von Klammern / Zitaten zu verfolgen. Durchsuchen Sie den String für einen der Opener oder den aktuellen näher. Beim Scannen durch Text, schau nur den Text näher an. Schieben Sie eins auf, wenn Sie den Öffner lesen, und Pop es aus, wenn Sie das näher finden.

Der volle Satz für JSON ist [ -> ] , { -> } und " -> " . Du solltest \" ausschließen. Du kannst die Spezifikation unter http://www.json.org/

Dann, wann immer ein ] angetroffen wird und der Stack hat nur ein Element (die obere Ebene '[') nach dem Auftauchen der passenden [ , dann wissen Sie, es ist Zeit, eine neue Zeile zu starten.

Schließlich sollten Sie sicherstellen, dass die erste [ und letzte ] nicht in Ihrer Ausgabe erscheinen.

Das gibt Ihnen separate JSON-Objekte für jedes Element der Liste, jeweils in einer separaten Zeile der Datei.

Wenn Sie in die Python-JSON-Bibliothek graben, sollte es einige Funktionen geben, die JSON auch analysieren. Sie könnten diese nutzen, auch wenn sie nicht Teil der öffentlichen Schnittstelle sind.

Natürlich können Sie das gleiche durch das Laden der Zeichenfolge mit der JSON-Bibliothek und dann Dumping es Element nach Artikel (oder mehrere Elemente) wie pro die andere Antwort zu erreichen.

  • Wie kann man Kesselplatte bei der Initialisierung von Klassen von JSONs in Python 3.5 reduzieren?
  • Wie benutzt man flask.jsonify und macht eine Vorlage in einer Flaschenroute
  • Übergeben von JSON-Daten an das Frontend mit Django
  • Warum bekomme ich Decoder-Fehler beim Drehen meines JSON-Arrays in eine Python-Liste mit json.loads?
  • Manipulieren von json Dateien python
  • Pandas read_csv mit der letzten Spalte mit Kommas
  • YAML lädt 5e-6 als String und nicht eine Zahl
  • Warum fällt json.dumps nicht-ascii Zeichen mit "\ uxxxx"
  • Komplexes Wörterbuch in pandas dataframe speichern
  • Warum ist PyYAML so viel Zeit damit, nur eine YAML-Datei zu analysieren?
  • Github-api gibt 404 bei der Übergabe von json-data mit python + urllib2
  • Python ist die beste Programmiersprache der Welt.