Maison > développement back-end > Tutoriel Python > Comment extraire efficacement plusieurs objets JSON d'un seul fichier à l'aide de « json.JSONDecoder.raw_decode » de Python ?

Comment extraire efficacement plusieurs objets JSON d'un seul fichier à l'aide de « json.JSONDecoder.raw_decode » de Python ?

Mary-Kate Olsen
Libérer: 2024-10-29 04:48:02
original
829 Les gens l'ont consulté

How to Extract Multiple JSON Objects from a Single File Efficiently Using Python's `json.JSONDecoder.raw_decode`?

Extraction itérative de plusieurs objets JSON à partir d'un seul fichier

Lorsque vous traitez des fichiers JSON contenant plusieurs objets JSON, il est crucial de trouver un moyen efficace pour extraire des éléments de données spécifiques de chaque objet.

Une approche consiste à utiliser la fonction json.JSONDecoder.raw_decode de Python. Cette fonction vous permet de décoder de grandes chaînes JSON contenant plusieurs objets, même si elles ne sont pas enveloppées dans un tableau racine.

Pour commencer, vous devrez supprimer tout espace de début du document JSON. Ensuite, vous pouvez utiliser raw_decode dans une boucle pour extraire les objets un par un. La fonction renvoie la dernière position où l'objet analysé s'est terminé et l'objet lui-même.

Voici un extrait de code qui illustre cette approche :

<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>
Copier après la connexion

En utilisant cette méthode, vous pouvez décoder une chaîne JSON avec plusieurs objets et extraire des éléments spécifiques dans un bloc de données. Par exemple, si votre fichier JSON contient la structure suivante :

<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>
Copier après la connexion

Votre code pourrait utiliser la boucle suivante pour extraire les valeurs "Timestamp" et "Utility" :

<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>
Copier après la connexion

Ceci La méthode fournit un moyen flexible et efficace d'extraire plusieurs objets JSON à partir d'un seul fichier, vous permettant de rassembler des données de structures JSON complexes dans un format tabulaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal