ホームページ >バックエンド開発 >Python チュートリアル >JSON 処理に Python 正規表現を使用する方法

JSON 処理に Python 正規表現を使用する方法

PHPz
PHPzオリジナル
2023-06-23 10:06:352016ブラウズ

日々のプログラミング作業では、JSON データを処理して情報を抽出する必要がある場合があります。正規表現の強力な機能は、この作業を迅速かつ効率的に完了するのに役立ちます。この記事では、Python 正規表現を使用して JSON 処理を行う方法を紹介します。

JSON は、ネットワーク送信とデータ ストレージに一般的に使用される軽量のデータ交換形式です。 Pythonではjsonライブラリを利用してJSONデータを解析することができますが、場合によってはJSONデータに何らかの加工や抽出を行う必要があり、その際に正規表現がその役割を果たします。

まず、JSON データの基本構造を見てみましょう。 JSON データは通常、キーと値のペアで構成されます。キーと値はコロン「:」で区切られ、各キーと値のペアはカンマ「,」で区切られ、最も外側の層は通常中括弧「{}」で囲まれます。 。例:

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

次に、Python 正規表現を使用してこの JSON データを抽出する方法を見てみましょう。「名前」フィールドと「年齢」フィールドを抽出する必要があると仮定すると、次の正規表現を使用できます。 :

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

この正規表現を分析します:

  • ": " 文字と一致します
  • s*: 任意の数のスペース文字と一致します
  • ( group ): 一致したコンテンツをキャプチャします。グループには任意の文字または正規表現
  • #1 を指定でき、「

Through」を除く任意の文字に一致します。上記の正規表現を使用すると、「名前」フィールドに対応する値と「年齢」フィールドに対応する値を抽出できます。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)

出力:

John 30

Nextでは、Python 正規表現を使用して JSON データを抽出する方法のアプリケーション シナリオをさらに見てみましょう。

  1. 指定されたフィールドの値の抽出

場合によっては、必要なのは次のとおりです。特定のフィールドの値を抽出するには、次の正規表現を使用できます:

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

たとえば、上記の JSON データの「city」フィールドに対応する値を抽出する必要がある場合は、次のようにします。次の正規表現を使用します: :

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

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)

出力:

New York
  1. 配列型要素の抽出

JSON データでは、配列型要素の値を抽出する必要がある場合、次の正規表現を使用できます。

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

たとえば、「」に対応する値のすべての要素を抽出する必要があります。次の JSON データの「pets」フィールド:

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

次のように正規表現を使用できます:

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

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)

出力:

{"name": "dog", "age": 3},{"name": "cat", "age": 2}
  1. 複数レベルのネストされた要素の抽出

複数層のネストされた要素内の特定の値を抽出する必要がある場合は、次の正規表現を使用できます:

"object1":s*{s*[sS]*?"object2":s*{s*[sS]*?"field_name":s*"([^"]+)"

たとえば、次の JSON データに対応する「pets」フィールドを抽出する必要があります。値の 2 番目の要素の「age」フィールドに対応する値:

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

次のように正規表現を使用できます。 :

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

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)

出力 :

2

概要:
JSON 処理に正規表現を使用すると、JSON データをより柔軟に抽出して処理できます。これは、JSON データのフィルタリング、フィルタリング、変換などが必要な特定の状況で役立ちます。操作のアプリケーション シナリオでは非常に重要です。ただし、JSON データを処理する場合、正規表現は使用できない場合があることに注意してください。より複雑な状況に適しており、実際の状況に応じて柔軟に選択する必要があります。


  1. "

以上がJSON 処理に Python 正規表現を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。