Pemula sering menghadapi beberapa masalah pemprosesan rentetan semasa menulis kod Python, seperti menghuraikan data daripada halaman web HTML, mengekstrak maklumat khusus daripada fail teks atau memintas bahagian penting daripada teks yang panjang, dsb. tunggu. Pada masa ini, kita boleh menggunakan ungkapan biasa untuk menyelesaikan masalah ini. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk menulis kod dan meningkatkan kecekapan pengekodan.
1. Apakah ungkapan biasa?
Ungkapan biasa ialah kaedah yang digunakan untuk memadankan rentetan. Ia menggunakan simbol dan aksara khas untuk membentuk peraturan, yang menjadikannya sangat mudah untuk menapis dan mencari teks. Modul ungkapan biasa yang biasa digunakan dalam Python ialah modul semula, yang boleh digunakan untuk melaksanakan operasi pemadanan dan penggantian biasa pada rentetan.
2. Sintaks asas ungkapan biasa
Sebelum menggunakan ungkapan biasa, kita perlu menguasai beberapa sintaks asas.
Set aksara: [ ] sepadan dengan mana-mana aksara yang terkandung dalam kurungan segi empat sama.
Metacharacter: . Padan dengan mana-mana aksara kecuali baris baharu.
Bilangan ulangan: * sepadan dengan sifar atau lebih aksara berulang, + sepadan dengan satu atau lebih aksara berulang, ?
Mula dan tamat: ^ sepadan dengan kedudukan permulaan rentetan, $ sepadan dengan kedudukan akhir rentetan.
Antonim: W sepadan dengan mana-mana aksara bukan huruf atau angka, S sepadan dengan mana-mana aksara bukan ruang putih.
Kumpulan: ( ) digunakan untuk mengumpulkan supaya mudah dikendalikan.
3. Amalan ungkapan biasa
Yang berikut menggunakan contoh untuk menggambarkan cara menggunakan ungkapan biasa untuk menulis kod dan kecekapan pengekodan.
Contoh 1: Ekstrak tarikh daripada teks
Dalam fail teks, kita perlu mengekstrak maklumat tarikh, contohnya: 1 Mei 2020, kita boleh menggunakan ungkapan biasa berikut:
import re string = '2020年5月1日' pattern = r"d+年d+月d+日" result = re.findall(pattern, string) print(result)
Hasil keluaran:
['2020年5月1日']
Contoh 2: Ekstrak pautan daripada halaman HTML
Dalam halaman web HTML, kita perlu mengekstrak semua maklumat pautan, contohnya:
import re import requests r = requests.get('http://www.baidu.com') pattern = re.compile(r'(http|https|ftp)://[^s]+') result = pattern.findall(r.text) print(result)
Hasil output:
['http://www.baidu.com/', 'http://home.baidu.com/', 'http://map.baidu.com/', 'http://v.baidu.com/', 'http://tieba.baidu.com/', 'http://fanyi.baidu.com/', 'http://news.baidu.com/', 'http://baijiahao.baidu.com/', 'http://xueshu.baidu.com/', 'http://wenku.baidu.com/', 'http://music.baidu.com/', 'http://image.baidu.com/', 'http://v.baidu.com/', 'http://tieba.baidu.com/', 'http://map.baidu.com/', 'http://wenku.baidu.com/', 'http://jingyan.baidu.com/', 'http://tieba.baidu.com/', 'http://zhidao.baidu.com/', 'http://tieba.baidu.com/', 'http://tieba.baidu.com/f?kw=%D6%D0%C9%BD%C1%F4%B2%FA&fr=index', 'http://tieba.baidu.com/f?kw=%B0%D9%B6%AF%B2%FA%D0%ED&fr=index', 'http://tieba.baidu.com/f?kw=%D2%EF%BE%AD%B5%DA&fr=index', 'http://tieba.baidu.com/f?kw=Ubuntu&fr=index', 'http://tieba.baidu.com/f?kw=%B0%C2%D7%B0%B5%DA&fr=index', 'http://tieba.baidu.com/f?kw=%B7%D7%CA%D0%CE%C4&fr=index', 'http://music.baidu.com/new', 'http://news.baidu.com/n?cmd=1&class=civilnews&tn=rss', 'http://baijiahao.baidu.com/u?app_id=1589334281367279', 'http://xueshu.baidu.com/s?wd=paperuri%3A%2836d90593d4c8d317f9ef4ef93bf56000%29&filter=sc_long_sign&sc_ks_para=q%3D%E9%A3%9F%E5%93%81%E5%AE%89%E5%85%A8', 'http://wenku.baidu.com/view/13908a38069661ce85006134', 'http://music.baidu.com/top?pst=shouyeTop', 'https://www.baidu.com/duty/', 'http://ir.baidu.com']
Contoh 3: Gantikan koma rentetan dengan noktah
Dalam fail teks, kita perlu menggantikan koma dengan noktah, contohnya:
import re string = '12,34,56,78' pattern = r',' replaced_string = re.sub(pattern, '.', string) print(replaced_string)
Output hasil:
12.34.56.78
Contoh 4: Sahkan sama ada rentetan ialah alamat e-mel
Apabila membangunkan sistem log masuk, kami perlu mengesahkan sama ada alamat e-mel yang dimasukkan oleh pengguna adalah sah, contohnya :
import re email = 'example@gmail.com' pattern = r'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$' if re.match(pattern, email): print('Email address is correct!') else: print('Invalid email address!')
Hasil keluaran:
Email address is correct!
4 Ringkasan
Ekspresi biasa Python memainkan peranan penting dalam pemprosesan teks Menguasai sintaks asas ungkapan biasa, anda boleh Bantu kami melengkapkan pengekodan dan tugas pemprosesan rentetan dengan lebih pantas dan cekap. Dalam pembangunan sebenar, ungkapan biasa boleh digunakan secara fleksibel dalam kombinasi dengan perpustakaan dan fungsi Python lain mengikut keperluan khusus untuk mencapai kecekapan pengekodan dan kualiti kod yang lebih baik.
Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk kecekapan pengekodan dan pengekodan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!