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

Cara menggunakan ungkapan biasa Python untuk pemprosesan JSON

PHPz
Lepaskan: 2023-06-23 10:06:35
asal
1978 orang telah melayarinya

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"
}
Salin selepas log masuk

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+)
Salin selepas log masuk

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
  • < kecuali " 🎜>
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)
Salin selepas log masuk

Output:

John 30
Salin selepas log masuk

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

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

"city":s*"([^"]+)"
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

New York
Salin selepas log masuk

    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*]
Salin selepas log masuk

Anda boleh menggunakan ungkapan biasa seperti berikut:

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

Pelaksanaan kod Python:

"pets":s*[s*([sS]*?)s*]
Salin selepas log masuk

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)
Salin selepas log masuk

    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}
Salin selepas log masuk

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

Anda boleh menggunakan ungkapan biasa seperti berikut:

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

Pelaksanaan kod Python:

"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}
Salin selepas log masuk

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)
Salin selepas log masuk
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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan