Maison  >  Article  >  développement back-end  >  Comment utiliser les expressions régulières Python pour le traitement JSON

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

PHPz
PHPzoriginal
2023-06-23 10:06:351954parcourir

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"
}

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+)

. 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)

Sortie :

John 30

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*"([^"]+)"

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*"([^"]+)"

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)

Sortie :

New York
  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*]

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
       }
   ]
}

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

"pets":s*[s*([sS]*?)s*]

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)

Sortie :

{"name": "dog", "age": 3},{"name": "cat", "age": 2}
  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*"([^"]+)"

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
       }
   ]
}

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

"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}

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)

Sortie :

2

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!

Déclaration:
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