Dalam pengekodan harian, kita selalunya perlu mengubah suai dan membina semula kod untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Salah satu alat penting ialah ungkapan biasa. Artikel ini akan memperkenalkan beberapa teknik biasa tentang cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod.
1 Cari dan gantikan
Salah satu fungsi ungkapan biasa yang paling biasa digunakan ialah cari dan ganti. Katakan kita perlu menggantikan semua kenyataan cetakan dalam kod dengan kenyataan log. Kita boleh menggunakan ungkapan biasa berikut untuk mencari:
prints*((.*))
Ungkapan biasa ini boleh memadankan pernyataan cetakan borang(...) dan menangkap kandungan dalam kurungan sebagai subkumpulan. Seterusnya, kita boleh menggunakan modul semula Python untuk melaksanakan operasi penggantian:
import re pattern = r'prints*((.*))' replacement = r'logging.info()' code = 'print("hello, world")' refactored_code = re.sub(pattern, replacement, code) print(refactored_code)
Hasil keluarannya ialah:
logging.info("hello, world")
Seperti yang dapat dilihat daripada contoh ini, menggunakan ungkapan biasa boleh mengekod semula dengan mudah struktur kod, yang lebih cekap daripada carian dan penggantian manual.
2. Pisahkan dan gabungkan rentetan
Satu lagi tugas pemfaktoran semula kod biasa ialah membelah dan menggabungkan rentetan. Sebagai contoh, kita perlu menukar rentetan "epal, pisang, oren" kepada senarai ['epal', 'pisang', 'oren']. Kita boleh menggunakan ungkapan biasa berikut untuk operasi pemisahan dan pemadanan:
import re pattern = r'(w+)' code = "apple,banana,orange" result = re.findall(pattern, code) print(result)
Hasil output ialah:
['apple', 'banana', 'orange']
Ungkapan biasa ini boleh memadankan satu atau lebih aksara ke dalam perkataan, dan dalam Cari semua sedemikian perkataan dalam rentetan dan kembalikan senarai. Begitu juga, kita boleh menggunakan kaedah gabungan Python untuk menggabungkan senarai menjadi rentetan:
import re pattern = r'(w+)' code = "apple,banana,orange" result = re.findall(pattern, code) refactored_code = ','.join(result) print(refactored_code)
Hasil output ialah:
apple,banana,orange
Kaedah ini boleh digunakan untuk pemprosesan rentetan yang lebih kompleks, Contohnya, biasa ungkapan sepadan dengan kandungan teg dalam dokumen XML atau HTML dan kemudian memprosesnya lagi.
3. Pengekstrakan dan pembinaan semula blok kod
Untuk beberapa asas kod yang besar, kita mungkin perlu mengekstrak dan membina semula beberapa blok kod. Ini juga boleh dicapai menggunakan ungkapan biasa. Sebagai contoh, kita perlu mengekstrak blok kod yang mengandungi beberapa fungsi dan menyimpannya sebagai fail berasingan. Kita boleh menggunakan ungkapan biasa berikut untuk memadankan blok kod:
import re pattern = r'def (.+):s+(.*)' code = ''' def foo(): print("foo") def bar(): print("bar") ''' # 使用正则表达式匹配 def 语句和它的下面的代码块 matches = re.findall(pattern, code, flags=re.DOTALL) # 将提取出来的代码块进行处理 new_code = " ".join(["def " + match[0] + ": " + match[1].replace(' ', ' ') for match in matches]) print(new_code)
Hasil output ialah:
def foo(): print("foo") def bar(): print("bar")
Ungkapan biasa ini boleh memadankan fungsi bermula dengan "def xxx():" Definisi, dan menangkap badan fungsi sebagai subkumpulan bersama-sama dengan nama fungsi. Akhir sekali, kita boleh menggabungkan semua definisi fungsi padanan ke dalam blok teks dengan baris baharu.
Ringkasan
Artikel ini memperkenalkan beberapa teknik biasa tentang cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod, termasuk mencari dan menggantikan, membelah dan menggabungkan rentetan, pengekstrakan blok kod dan pemfaktoran semula, dsb. Ungkapan biasa ialah alat berkuasa yang boleh membantu kami memfaktorkan semula kod dengan lebih cekap dan meningkatkan kebolehselenggaraan dan kebolehbacaan kod. Mahir dalam penggunaan ungkapan biasa akan menjadi salah satu kemahiran yang amat diperlukan setiap pengaturcara Python.
Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!