Menggantikan Berbilang Kejadian Rentetan dengan Nilai Kamus
Dalam senario pengaturcaraan, anda mungkin menghadapi keperluan untuk menggantikan berbilang kejadian perkataan atau frasa tertentu dalam rentetan menggunakan kamus yang disediakan.
Mari kita pertimbangkan contoh:
<code class="python">d = { 'Спорт':'Досуг', 'russianA':'englishA' } s = 'Спорт russianA'</code>
Tugasnya ialah untuk menggantikan setiap penampilan kunci daripada kamus 'd' dalam rentetan 's' dengan nilai kamus yang sepadan. Hasil yang dijangkakan untuk contoh ini ialah 'Досуг englishA'.
Penyelesaian Menggunakan Ungkapan Biasa
Menggunakan modul ungkapan biasa terbina dalam Python 're', kita boleh mencapai ini penggantian dengan cekap:
<code class="python">import re s = 'Спорт not russianA' d = { 'Спорт':'Досуг', 'russianA':'englishA' } # Escape special characters in dictionary keys keys = (re.escape(k) for k in d.keys()) # Construct a regex pattern with alternating ключей pattern = re.compile(r'\b(' + '|'.join(keys) + r')\b') # Perform substitutions using the provided dictionary result = pattern.sub(lambda x: d[x.group()], s)</code>
Pendekatan ini menggunakan kaedah 're.sub' untuk menggantikan padanan dengan nilai daripada kamus 'd'. Dengan menggunakan metakarakter 'sempadan' yang terlepas ('b'), kami memastikan bahawa hanya keseluruhan perkataan dipadankan.
Sambungan untuk Padanan Separa
Jika kamus anda mengandungi beberapa perkataan sebagai subrentetan orang lain, menyusun kekunci menurun mengikut panjang (terbesar kepada terkecil) sebelum menjana corak regex adalah disyorkan. Ini menghalang subrentetan daripada dipadankan dan bukannya perkataan yang lebih besar.
Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Kejadian Berbilang Rentetan Menggunakan Kamus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!