Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich mehrere JSON-Objekte effizient aus einer einzelnen Datei mit Pythons „json.JSONDecoder.raw_decode'?
Iteratives Extrahieren mehrerer JSON-Objekte aus einer einzelnen Datei
Beim Umgang mit JSON-Dateien, die mehrere JSON-Objekte enthalten, ist es entscheidend, einen effizienten Weg zu finden um bestimmte Datenelemente aus jedem Objekt zu extrahieren.
Ein Ansatz besteht darin, die Funktion json.JSONDecoder.raw_decode von Python zu verwenden. Mit dieser Funktion können Sie große JSON-Strings dekodieren, die mehrere Objekte enthalten, auch wenn diese nicht in ein Root-Array eingeschlossen sind.
Zunächst müssen Sie alle führenden Leerzeichen aus dem JSON-Dokument entfernen. Anschließend können Sie raw_decode in einer Schleife verwenden, um Objekte einzeln zu extrahieren. Die Funktion gibt die letzte Position zurück, an der das analysierte Objekt endete, und das Objekt selbst.
Hier ist ein Codeausschnitt, der diesen Ansatz demonstriert:
<code class="python">from json import JSONDecoder, JSONDecodeError import re NOT_WHITESPACE = re.compile(r'\S') def decode_stacked(document, pos=0, decoder=JSONDecoder()): while True: match = NOT_WHITESPACE.search(document, pos) if not match: return pos = match.start() try: obj, pos = decoder.raw_decode(document, pos) except JSONDecodeError: # handle error raise yield obj</code>
Mit dieser Methode können Sie einen JSON-String dekodieren mit mehreren Objekten und extrahieren Sie bestimmte Elemente in einen Datenrahmen. Wenn Ihre JSON-Datei beispielsweise die folgende Struktur enthält:
<code class="json">{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes", "Code":[{"event1":"A","result":"1"},…]} {"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No", "Code":[{"event1":"B","result":"1"},…]} {"ID":"AA356","Timestamp":"20140103", "Usefulness":"No", "Code":[{"event1":"B","result":"0"},…]} …</code>
Ihr Code könnte die folgende Schleife verwenden, um die Werte „Zeitstempel“ und „Nützlichkeit“ zu extrahieren:
<code class="python">import pandas as pd data = [] for obj in decode_stacked(json_string): data.append([obj["Timestamp"], obj["Usefulness"]]) df = pd.DataFrame(data, columns=["Timestamp", "Usefulness"])</code>
Dies Die Methode bietet eine flexible und effiziente Möglichkeit, mehrere JSON-Objekte aus einer einzigen Datei zu extrahieren, sodass Sie Daten aus komplexen JSON-Strukturen in einem Tabellenformat sammeln können.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich mehrere JSON-Objekte effizient aus einer einzelnen Datei mit Pythons „json.JSONDecoder.raw_decode'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!