Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan ungkapan biasa Python untuk pemprosesan JSON

Cara menggunakan ungkapan biasa Python untuk pemprosesan JSON

PHPz
PHPzasal
2023-06-23 10:06:351949semak imbas

Dalam kerja pengaturcaraan harian, kadangkala kami perlu memproses data JSON dan mengekstrak maklumat, dan fungsi kuat ungkapan biasa boleh membantu kami menyelesaikan kerja ini dengan cepat dan cekap. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ungkapan biasa Python untuk pemprosesan JSON.

JSON ialah format pertukaran data ringan yang biasa digunakan untuk penghantaran rangkaian dan penyimpanan data. Dalam Python, kita boleh menggunakan perpustakaan json untuk menghuraikan data JSON, tetapi dalam beberapa kes, kita perlu melakukan pemprosesan dan pengekstrakan data JSON tertentu Pada masa ini, ungkapan biasa akan memainkan peranannya.

Pertama, mari kita lihat struktur asas data JSON. Data JSON biasanya terdiri daripada pasangan nilai kunci dan nilai dipisahkan oleh titik bertindih ":", setiap pasangan nilai kunci dipisahkan dengan koma "," dan lapisan paling luar biasanya dibalut dengan kurungan kerinting "{}" . Contohnya:

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

Sekarang mari kita lihat cara menggunakan ungkapan biasa Python untuk mengekstrak data JSON ini. Katakan kita perlu mengekstrak medan "nama" dan "umur", kita boleh menggunakan ungkapan biasa berikut :

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

Analisis ungkapan biasa ini:

  • ": padankan "aksara
  • s*: padankan sebarang bilangan aksara ruang
  • ( kumpulan ): menangkap kandungan yang dipadankan boleh menjadi sebarang aksara atau ungkapan biasa
  • 1, memadankan mana-mana aksara
Dengan ungkapan biasa di atas, kita boleh mengekstrak nilai yang sepadan dengan medan "nama" dan nilai yang sepadan dengan medan "umur" Dilaksanakan menggunakan kod 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)

Output:

John 30

Seterusnya. , mari kita lihat lebih banyak senario aplikasi tentang cara menggunakan ungkapan biasa Python untuk pengekstrakan data JSON

    Ekstrak nilai dari medan yang ditentukan
Kadangkala kita hanya perlu ekstrak nilai medan tertentu Kita boleh menggunakan ungkapan biasa berikut:

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

Contohnya, jika kita perlu mengekstrak nilai yang sepadan dengan medan "bandar" dalam data JSON di atas, kita boleh menggunakan ungkapan biasa berikut: :

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

Pelaksanaan kod 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)

Output:

New York

    Pengestrakan elemen jenis array
Dalam JSON data, terdapat Apabila kita perlu mengekstrak nilai elemen jenis tatasusunan, kita boleh menggunakan ungkapan biasa berikut:

rreee

Sebagai contoh, kita perlu mengekstrak semua elemen dalam nilai yang sepadan dengan "haiwan peliharaan" medan dalam data JSON berikut:

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

Anda boleh menggunakan ungkapan biasa seperti berikut:

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

Pelaksanaan kod Python:

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

Output:

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)

    Pengekstrakan elemen bersarang berbilang peringkat
Kadangkala kita perlu mengekstrak nilai tertentu dalam elemen bersarang berbilang lapisan Anda boleh menggunakan ungkapan biasa berikut:

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

Sebagai contoh , kita perlu mengekstrak medan "haiwan peliharaan" yang sepadan dalam data JSON berikut Nilai yang sepadan dengan medan "umur" elemen kedua dalam nilai:

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

Anda boleh menggunakan ungkapan biasa seperti berikut:

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

Pelaksanaan kod Python:

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

Output :

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)

Ringkasan:

Menggunakan ungkapan biasa untuk pemprosesan JSON membolehkan kami mengekstrak dan memproses data JSON dengan lebih fleksibel, iaitu berguna untuk situasi tertentu di mana data JSON perlu ditapis, ditapis, ditukar, dsb. Ia amat penting dalam senario aplikasi operasi Walau bagaimanapun, perlu diingat bahawa apabila memproses data JSON, ungkapan biasa mungkin tidak sesuai untuknya situasi yang lebih kompleks dan perlu dipilih secara fleksibel mengikut situasi sebenar.


    "

Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk pemprosesan JSON. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn