Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man JSON-Daten mit mehreren eingebetteten Objekten in Python effizient analysieren?

Wie kann man JSON-Daten mit mehreren eingebetteten Objekten in Python effizient analysieren?

Patricia Arquette
Freigeben: 2024-10-29 12:32:29
Original
539 Leute haben es durchsucht

How to Efficiently Parse JSON Data with Multiple Embedded Objects in Python?

Herausforderungen beim JSON-Parsing mit mehreren eingebetteten Objekten

Dieser Artikel befasst sich mit der Herausforderung beim Extrahieren von Daten aus einer JSON-Datei, die mehrere verschachtelte JSON-Objekte enthält. Solche Dateien stellen beim Umgang mit großen Datensätzen oft eine Herausforderung dar.

Problemstellung

Stellen Sie sich eine JSON-Datei mit mehreren JSON-Objekten wie folgt vor:

<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>
Nach dem Login kopieren

Die Aufgabe besteht darin, sie zu extrahieren die Werte „Zeitstempel“ und „Nützlichkeit“ von jedem Objekt in einen Datenrahmen:

Timestamp Usefulness
20140101 Yes
20140102 No
20140103 No
... ...

Lösungsübersicht

Um dieser Herausforderung zu begegnen, verwenden wir die Methode json.JSONDecoder.raw_decode in Python . Diese Methode ermöglicht die Dekodierung großer Zeichenfolgen „gestapelter“ JSON-Objekte. Es gibt die letzte Position des analysierten Objekts und ein gültiges Objekt zurück. Indem wir die zurückgegebene Position an raw_decode zurückgeben, können wir die Analyse ab diesem Punkt fortsetzen.

Implementierung

<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 errors appropriately
            raise
        yield obj

s = """

{“a”: 1}  


[
1
,   
2
]


"""

for obj in decode_stacked(s):
    print(obj)</code>
Nach dem Login kopieren

Dieser Code durchläuft die JSON-Objekte in der Zeichenfolge s und gibt jedes Objekt aus:

{'a': 1}
[1, 2]
Nach dem Login kopieren

Fazit

Die bereitgestellte Lösung bewältigt effektiv die Herausforderung, Daten aus mehreren verschachtelten JSON-Objekten zu extrahieren, die in einer einzigen Datei eingebettet sind. Durch die Verwendung der Methode json.JSONDecoder.raw_decode und die Behandlung potenzieller Fehler können wir große Datensätze effizient verarbeiten. Die Funktion decode_stacked kann als wiederverwendbares Tool zum Umgang mit solchen Dateiformaten verwendet werden.

Das obige ist der detaillierte Inhalt vonWie kann man JSON-Daten mit mehreren eingebetteten Objekten in Python effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage