Comment utiliser les expressions régulières Python pour le traitement JSON

PHPz
Libérer: 2023-06-23 10:06:35
original
1959 Les gens l'ont consulté

Dans le travail de programmation quotidien, nous devons parfois traiter des données JSON et extraire des informations, et la fonction puissante des expressions régulières peut nous aider à terminer ce travail rapidement et efficacement. Dans cet article, nous expliquerons comment utiliser les expressions régulières Python pour le traitement JSON.

JSON est un format d'échange de données léger couramment utilisé pour la transmission réseau et le stockage de données. En Python, nous pouvons utiliser la bibliothèque json pour analyser les données JSON, mais dans certains cas, nous devons effectuer certains traitements et extractions de données JSON. À ce stade, les expressions régulières joueront leur rôle.

Tout d’abord, examinons la structure de base des données JSON. Les données JSON se composent généralement de paires clé-valeur. Les clés et les valeurs sont séparées par des deux-points : ", chaque paire clé-valeur est séparée par des virgules "," et la couche la plus externe est généralement entourée d'accolades "{}". . Par exemple :

{
   "name": "John",
   "age": 30,
   "city": "New York"
}
Copier après la connexion

Voyons maintenant comment utiliser les expressions régulières Python pour extraire ces données JSON. Supposons que nous devions extraire les champs "nom" et "âge", nous pouvons utiliser les expressions régulières suivantes :

"name":s*"([^"]+)",s*"age":s*(d+)
Copier après la connexion

. Analysez cette expression régulière :

  •  : match " caractères
  • s* : correspond à n'importe quel nombre de caractères d'espace
  • (group) : capture le contenu correspondant, le groupe peut être n'importe quel caractère ou expression régulière
  • 1 , correspond à n'importe quel caractère sauf "

Avec l'expression régulière ci-dessus, nous pouvons extraire la valeur correspondant au champ "nom" et la valeur correspondant au champ "âge". Implémenté en utilisant le code Python :

import re

s = '{"name": "John", "age": 30, "city": "New York"}'

pattern = re.compile(r'"name":s*"([^"]+)",s*"age":s*(d+)')

match = pattern.search(s)

if match:
    name = match.group(1)
    age = match.group(2)
    print(name, age)
Copier après la connexion

Sortie :

John 30
Copier après la connexion

Ensuite, examinons d'autres scénarios d'application sur la façon d'utiliser les expressions régulières Python pour l'extraction de données JSON

  1. Extraire la valeur d'un champ spécifié

Parfois, nous avons seulement besoin d'extraire la valeur d'un certain champ Valeur. , vous pouvez utiliser l'expression régulière suivante :

"field_name":s*"([^"]+)"
Copier après la connexion

Par exemple, si nous devons extraire la valeur correspondant au champ "city" dans les données JSON ci-dessus, nous pouvons utiliser l'expression régulière comme suit :

"city":s*"([^"]+)"
Copier après la connexion

Implémentation du code Python :

import re

s = '{"name": "John", "age": 30, "city": "New York"}'

pattern = re.compile(r'"city":s*"([^"]+)",')

match = pattern.search(s)

if match:
    city = match.group(1)
    print(city)
Copier après la connexion

Sortie :

New York
Copier après la connexion
  1. Extraction d'élément de type tableau

Dans les données JSON, nous devons parfois extraire la valeur d'un élément de type tableau, vous pouvez utiliser l'expression régulière suivante :

"array_field":s*[s*([sS]*?)s*]
Copier après la connexion

Par exemple, nous devons extraire le champ "pets" dans les données JSON suivantes Tous les éléments dans la valeur correspondante :

{
   "name": "John",
   "age": 30,
   "pets": [
       {
           "name": "dog",
           "age": 3
       },
       {
           "name": "cat",
           "age": 2
       }
   ]
}
Copier après la connexion
Copier après la connexion

Vous pouvez utiliser l'expression régulière comme suit :

"pets":s*[s*([sS]*?)s*]
Copier après la connexion

Implémentation du code Python :

import re

s = '{"name": "John", "age": 30, "pets": [{"name": "dog", "age": 3},{"name": "cat", "age": 2}]}'

pattern = re.compile(r'"pets":s*[s*([sS]*?)s*]')

match = pattern.search(s)

if match:
    pets = match.group(1)
    print(pets)
Copier après la connexion

Sortie :

{"name": "dog", "age": 3},{"name": "cat", "age": 2}
Copier après la connexion
  1. Imbriqué à plusieurs niveaux extraction d'éléments

Parfois nous devons extraire plusieurs niveaux. Pour une valeur dans un élément imbriqué, vous pouvez utiliser l'expression régulière suivante :

"object1":s*{s*[sS]*?"object2":s*{s*[sS]*?"field_name":s*"([^"]+)"
Copier après la connexion

Par exemple, nous devons extraire la valeur correspondant au champ "age" du second élément dans la valeur du champ "pets" dans les données JSON suivantes :

{
   "name": "John",
   "age": 30,
   "pets": [
       {
           "name": "dog",
           "age": 3
       },
       {
           "name": "cat",
           "age": 2
       }
   ]
}
Copier après la connexion
Copier après la connexion

Vous pouvez utiliser des expressions régulières comme suit :

"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}
Copier après la connexion

Implémentation du code Python :

import re

s = '{"name": "John", "age": 30, "pets": [{"name": "dog", "age": 3},{"name": "cat", "age": 2}]}'

pattern = re.compile(r'"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}')

match = pattern.search(s)

if match:
    age = match.group(1)
    print(age)
Copier après la connexion

Sortie :

2
Copier après la connexion

Résumé :
Utilisation d'expressions régulières pour JSON Le traitement nous permet d'extraire et de traiter les données JSON de manière plus flexible, ce qui est d'une grande importance dans certains scénarios d'application nécessitant un filtrage, un filtrage, une conversion, etc. des données JSON. Cependant, il convient de noter que lors du traitement des données JSON, des expressions régulières peuvent être utilisées. ne convient pas à des situations plus complexes, vous devez choisir avec flexibilité en fonction de la situation réelle


  1. "
.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal