Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie reguläre Python-Ausdrücke für die JSON-Verarbeitung

So verwenden Sie reguläre Python-Ausdrücke für die JSON-Verarbeitung

PHPz
PHPzOriginal
2023-06-23 10:06:351967Durchsuche

Bei der täglichen Programmierarbeit müssen wir manchmal JSON-Daten verarbeiten und Informationen extrahieren, und die leistungsstarken Funktionen regulärer Ausdrücke können uns dabei helfen, diese Arbeit schnell und effizient zu erledigen. In diesem Artikel stellen wir vor, wie man reguläre Python-Ausdrücke für die JSON-Verarbeitung verwendet.

JSON ist ein leichtes Datenaustauschformat, das häufig für die Netzwerkübertragung und Datenspeicherung verwendet wird. In Python können wir die JSON-Bibliothek zum Parsen von JSON-Daten verwenden, in einigen Fällen müssen wir jedoch eine bestimmte Verarbeitung und Extraktion von JSON-Daten durchführen. Zu diesem Zeitpunkt spielen reguläre Ausdrücke eine Rolle.

Werfen wir zunächst einen Blick auf die Grundstruktur von JSON-Daten. JSON-Daten bestehen normalerweise aus Schlüssel-Wert-Paaren. Schlüssel und Werte werden durch Doppelpunkte getrennt: „, jedes Schlüssel-Wert-Paar wird durch Kommas getrennt“, und die äußerste Ebene wird normalerweise durch geschweifte Klammern „{}“ umschlossen. . Zum Beispiel:

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

Jetzt schauen wir uns an, wie man reguläre Python-Ausdrücke verwendet, um diese JSON-Daten zu extrahieren. Angenommen, wir müssen die Felder „Name“ und „Alter“ extrahieren, können wir die folgenden regulären Ausdrücke verwenden:

"name":s*"([^"]+)",s*"age":s*(d+)

Analysieren Sie diesen regulären Ausdruck:

  • ": Übereinstimmung mit „"-Zeichen
  • s*: Übereinstimmung mit einer beliebigen Anzahl von Leerzeichen
  • (Gruppe): Erfassen Sie den übereinstimmenden Inhalt. Die Gruppe kann ein beliebiges Zeichen oder ein regulärer Ausdruck sein
  • 1 , entspricht jedem Zeichen außer „

Mit dem obigen regulären Ausdruck können wir den Wert extrahieren, der dem Feld „Name“ und dem Wert entspricht, der dem Feld „Alter“ entspricht. Implementiert mit Python-Code:

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)

Ausgabe:

John 30

Schauen wir uns als Nächstes weitere Anwendungsszenarien zur Verwendung regulärer Python-Ausdrücke für die JSON-Datenextraktion an.

  1. Extrahieren Sie den Wert eines bestimmten Felds. Manchmal müssen wir nur den Wert eines bestimmten Felds extrahieren , können Sie den folgenden regulären Ausdruck verwenden:
  2. "field_name":s*"([^"]+)"
Wenn wir beispielsweise den Wert extrahieren müssen, der dem Feld „Stadt“ in den JSON-Daten oben entspricht, können wir den folgenden regulären Ausdruck verwenden:

"city":s*"([^"]+)"

Python-Code-Implementierung:

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)

Ausgabe:

New York

Extraktion von Array-Typ-Elementen

  1. In JSON-Daten müssen wir manchmal den Wert eines Array-Typ-Elements extrahieren. Sie können den folgenden regulären Ausdruck verwenden:
  2. "array_field":s*[s*([sS]*?)s*]
Zum Beispiel müssen wir extrahieren das Feld „Haustiere“ in den folgenden JSON-Daten Alle Elemente im entsprechenden Wert:

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

Sie können den regulären Ausdruck wie folgt verwenden:

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

Python-Code-Implementierung:

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)

Ausgabe:

{"name": "dog", "age": 3},{"name": "cat", "age": 2}

Mehrstufiges verschachteltes Element Extraktion

  1. Manchmal müssen wir mehrere Ebenen extrahieren. Für einen Wert in einem verschachtelten Element können Sie den folgenden regulären Ausdruck verwenden:
  2. "object1":s*{s*[sS]*?"object2":s*{s*[sS]*?"field_name":s*"([^"]+)"
Zum Beispiel müssen wir den Wert extrahieren, der dem Feld „Alter“ des zweiten Elements entspricht im Wert des Felds „Haustiere“ in den folgenden JSON-Daten:

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

Sie können reguläre Ausdrücke wie folgt verwenden:

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

Python-Code-Implementierung:

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)

Ausgabe:

2

Zusammenfassung:

Verwendung regulärer Ausdrücke für die JSON-Verarbeitung ermöglicht es uns, JSON-Daten flexibler zu extrahieren und zu verarbeiten, was in einigen Anwendungsszenarien, die das Filtern, Filtern, Konvertieren usw. erfordern, von großer Bedeutung ist. Allerdings ist zu beachten, dass bei der Verarbeitung von JSON-Daten möglicherweise keine regulären Ausdrücke verwendet werden Um für komplexere Situationen geeignet zu sein, müssen Sie flexibel entsprechend der tatsächlichen Situation wählen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie reguläre Python-Ausdrücke für die JSON-Verarbeitung. 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