Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich mehrere JSON-Objekte effizient aus einer einzelnen Datei mit Pythons „json.JSONDecoder.raw_decode'?

Wie extrahiere ich mehrere JSON-Objekte effizient aus einer einzelnen Datei mit Pythons „json.JSONDecoder.raw_decode'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 04:48:02772Durchsuche

How to Extract Multiple JSON Objects from a Single File Efficiently Using Python's `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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn