Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program Python untuk mengekstrak rentetan antara tag HTML

Program Python untuk mengekstrak rentetan antara tag HTML

WBOY
WBOYke hadapan
2023-08-19 09:37:191619semak imbas

Program Python untuk mengekstrak rentetan antara tag HTML

Tag HTML digunakan untuk mereka bentuk rangka kerja laman web. Kami menyampaikan maklumat dan memuat naik kandungan dalam bentuk rentetan yang terkandung dalam tag. Rentetan antara tag HTML menentukan cara elemen dipaparkan dan ditafsirkan oleh penyemak imbas. Oleh itu, mengekstrak rentetan ini memainkan peranan penting dalam manipulasi dan pemprosesan data. Kita boleh menganalisis dan memahami struktur dokumen HTML.

Rentetan ini mendedahkan corak dan logik tersembunyi di sebalik membina halaman web. Dalam artikel ini, kita akan berurusan dengan rentetan ini. Tugas kami adalah untuk mengekstrak rentetan antara tag HTML.

Memahami masalah

Kami perlu mengekstrak semua rentetan antara tag HTML. Rentetan sasaran kami dikelilingi oleh pelbagai jenis teg dan hanya bahagian kandungan yang perlu diambil. Marilah kita memahami masalah ini melalui contoh.

Senario input dan output

Mari kita pertimbangkan rentetan -

Input:
Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"

Rentetan input terdiri daripada teg HTML yang berbeza dan kami perlu mengekstrak rentetan di antaranya.

Output: [" This is a test string,  Let's code together "]

Seperti yang kita lihat, teg "

" dan "

" dialih keluar dan rentetan diekstrak. Sekarang setelah kita memahami masalahnya, mari kita bincangkan beberapa penyelesaian.

Gunakan lelaran dan ganti()

Kaedah ini memfokuskan pada menghapuskan dan menggantikan tag HTML. Kami akan menghantar rentetan dan senarai tag HTML yang berbeza. Selepas itu, kami akan memulakan rentetan ini kepada elemen senarai.

Kami akan mengulangi setiap elemen dalam senarai tag dan menyemak sama ada ia wujud dalam rentetan asal. Kami akan melepasi pembolehubah "pos" yang akan menyimpan nilai indeks dan memacu proses lelaran.

Kami akan menggunakan kaedah "replace()" untuk menggantikan setiap teg dengan ruang dan mendapatkan rentetan tanpa teg HTML.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Berikut ialah contoh untuk mengekstrak rentetan antara tag HTML -

Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["<h1>", "</h1>", "<p>", "</p>", "<b>", "</b>", "<br>"]
print(f"This is the original string: {Inp_STR}")
ExStr = [Inp_STR]
pos = 0

for tag in tags:
   if tag in ExStr[pos]:
      ExStr[pos] = ExStr[pos].replace(tag, " ")
pos += 1

print(f"The extracted string is : {ExStr}")

Output

This is the original string: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is : [" This is a test string,  Let's code together "]

Gunakan modul ekspresi biasa + findall()

Dalam kaedah ini, kami akan menggunakan modul ekspresi biasa untuk memadankan corak tertentu. Kami akan menghantar ungkapan biasa: "(.*?)"+tag+">", yang mewakili corak sasaran. Mod ini direka untuk menangkap teg pembukaan dan penutup. Di sini, "tag" ialah pembolehubah yang nilainya diperoleh daripada senarai teg dengan mengulang.

Fungsi "findall()" digunakan untuk mencari semua kemunculan corak dalam rentetan mentah. Kami akan menambah semua "padanan" pada senarai baharu menggunakan kaedah "extend()". Dengan cara ini, kami akan mengekstrak rentetan yang terkandung dalam teg HTML.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Berikut adalah contoh -

import re
Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["h1", "p", "b", "br"]
print(f"This is the original string: {Inp_STR}")
ExStr = []

for tag in tags:
   seq = "<"+tag+">(.*?)</"+tag+">"
   matches = re.findall(seq, Inp_STR)
   ExStr.extend(matches)
print(f"The extracted string is: {ExStr}")

Output

This is the original string: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is: ['This is a test string,', "Let's code together"]

Gunakan fungsi lelaran dan cari()

Dalam kaedah ini kita akan menggunakan kaedah "find()" untuk mendapatkan kejadian pertama tag pembukaan dan penutup dalam rentetan asal. Kami akan mengulangi setiap elemen dalam senarai tag dan mendapatkan semula kedudukannya dalam rentetan.

Gelung While akan digunakan untuk terus mencari teg HTML dalam rentetan. Kami akan membina syarat untuk menyemak sama ada terdapat teg yang tidak lengkap dalam rentetan. Pada setiap lelaran, nilai indeks akan dikemas kini untuk mencari kejadian seterusnya bagi teg pembukaan dan penutup.

Nilai indeks semua teg pembukaan dan penutup disimpan dan setelah keseluruhan rentetan dipetakan, kami menggunakan penghirisan rentetan untuk mengekstrak rentetan antara tag HTML.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Berikut adalah contoh -

Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["h1", "p", "b", "br"]
ExStr = []
print(f"The original string is: {Inp_STR}")

for tag in tags:
   tagpos1 = Inp_STR.find("<"+tag+">")
   while tagpos1 != -1:
      tagpos2 = Inp_STR.find("</"+tag+">", tagpos1)
      if tagpos2 == -1:
         break
      ExStr.append(Inp_STR[tagpos1 + len(tag)+2: tagpos2])
      tagpos1 = Inp_STR.find("<"+tag+">", tagpos2)

print(f"The extracted string is: {ExStr}")

Output

The original string is: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is: ['This is a test string,', "Let's code together"]

Kesimpulan

Dalam artikel ini, kami telah membincangkan banyak cara untuk mengekstrak rentetan antara tag HTML. Mari kita mulakan dengan penyelesaian yang lebih mudah, mencari dan menggantikan teg dengan ruang. Kami juga menggunakan modul ekspresi biasa dan fungsi findall() untuk mencari corak padanan. Kami juga mempelajari tentang kaedah find() dan aplikasi penghirisan rentetan.

Atas ialah kandungan terperinci Program Python untuk mengekstrak rentetan antara tag HTML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam