Berbilang Penggantian dalam Rentetan Menggunakan Kamus
Memandangkan kamus d memetakan satu set kunci kepada penggantian yang diingini dan rentetan yang mengandungi kunci ini, bagaimana anda boleh menggantikan setiap kejadian kunci dalam s dengan nilai yang sepadan daripada d?
Penyelesaian:
Menggunakan modul semula Python membolehkan penggantian berbilang yang cekap dalam rentetan menggunakan kamus:
<code class="python">import re s = 'Спорт not russianA' d = { 'Спорт': 'Досуг', 'russianA': 'englishA' } keys = (re.escape(k) for k in d.keys()) pattern = re.compile(r'\b(' + '|'.join(keys) + r')\b') result = pattern.sub(lambda x: d[x.group()], s) print(result) # Output: 'Досуг not englishA'</code>
Pendekatan ini menggunakan corak ungkapan biasa yang sepadan dengan keseluruhan perkataan yang sepadan dengan mana-mana kunci d. Fungsi lambda dalam kaedah sub melaksanakan penggantian menggunakan d.
Untuk membenarkan penggantian dalam perkataan dan bukan sahaja pada sempadan perkataan, ubah suai corak:
<code class="python">pattern = re.compile('|'.join(re.escape(k) for k in d.keys()))</code>
Dalam kes ini, susun kamus kekunci menurun mengikut panjang untuk mengelakkan padanan subrentetan.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Penggantian Berbilang Rentetan Menggunakan Kamus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!