Bagaimana menemukan dan mengganti kejadian terakhir sub
dengan pengganti repl
dalam string Python s
?
Mari kita lihat beberapa contoh untuk memahami masalahnya secara menyeluruh
Example 1:s = 'fifi' sub = 'fi'
repl = 'nxter' result: 'finxter'
Example 2:s = '...' sub = '.'
repl = 'hello' result: '..hello'
Example 3:s = 'hello\nworld\nuniverse' sub = '\n'
repl = ' and ' result: 'hello\nworld and universe'
Mari selami metode Python murni pertama selanjutnya
Metode 1. menemukan[]
Metode Python
_2 mengembalikan indeks tertinggi dalam string tempat substring ditemukan, yaitu. e. , indeks kejadian terakhir dari substring dalam string yang diberikan atauindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
3 jika tidak ditemukan. Anda dapat menggunakan mengiris dalam kombinasi denganindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
4 yang ditemukan untuk menyelesaikan masalah seperti ituindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
_index = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
- Anda menggunakan
_5 untuk menemukan kejadian terakhir dariindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
sub
dis
- Anda menggunakan operasi pemotongan
8 danindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
9 untuk mendapatkan bagian yang tidak berubah dari string baru yang tidak digantiindex = s.rfind[sub]
s[:index] + repl + s[index+len[sub]:]
- Anda memasukkan string pengganti
repl
_ menggunakan rangkaian string dengan hasil operasi pemotongan di atas
Mari kita lihat contoh praktis selanjutnya
Contoh. Inilah cara Anda dapat membuat string baru dengan kejadian terakhir dari substring yang diberikan diganti dengan string pengganti yang diberikan
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'_
Agar dapat dipahami, mari selami dua contoh lain yang diperkenalkan dalam rumusan masalah
# Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'_
Anda dapat menemukan beberapa informasi latar belakang tentang
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'_1 dan beberapa metode string lainnya dalam video berikut—menaklukkan metode string untuk selamanya. 🙂
Metode String Python [Panduan Utama]
Tonton video ini di YouTube
Metode 2. sub ekspresi reguler []
Fungsi regex
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'2 menggantikan semua kemunculan pola
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'3 dengan penggantian
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'4 dalam string
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'5. Ini mengembalikan string baru
Misalnya, jika Anda memanggil
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'_6, hasilnya adalah string baru
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'7 dengan semua karakter
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'8 diganti dengan
def repl_last[s, sub, repl]: index = s.rfind[sub] if index == -1: return s return s[:index] + repl + s[index+len[sub]:] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter'9
Namun, Anda tidak ingin mengganti semua substring yang cocok—hanya yang terakhir. Jadi, bagaimana cara mewujudkannya?
Mari kita lihat jawaban singkatnya — saya akan menjelaskannya lebih detail dan dengan contoh sesudahnya
pattern = sub + '[?!.*' + sub + ']'
return re.sub[pattern, repl, s, flags=re.DOTALL]
- Anda membuat pola
sub
dengan pandangan ke depan negatif# Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'
1 untuk memastikan bahwa kita cocok dengan pola paling kanansub
dan tidak terjadi di mana pun di sebelah kanan - Anda mengganti pola paling kanan ini dengan string pengganti menggunakan metode
# Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'
3 - Anda menyetel bendera
# Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'
4 untuk memastikan bahwa titik dan asterisk# Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'
5 bagian dari pola cocok dengan semua karakter termasuk karakter baris baru. Ini hanya pengoptimalan kecil untuk mencocokkan beberapa kasus perbatasan dengan benar
Oke, mari kita lihat kodenya untuk melihat apakah itu memecahkan masalah kita dengan benar
import re def repl_last[s, sub, repl]: pattern = sub + '[?!.*' + sub + ']' return re.sub[pattern, repl, s, flags=re.DOTALL] # Example 1: s = 'fifi' sub = 'fi' repl = 'nxter' result = repl_last[s, sub, repl] print[result] # result: 'finxter' # Example 2: s = '...' sub = '.' repl = 'hello' result = repl_last[s, sub, repl] print[result] # result: '..hello' # Example 3: s = 'hello\nworld\nuniverse' sub = '\n' repl = ' and ' result = repl_last[s, sub, repl] print[result] # result: 'hello\nworld and universe'
Ya. Regex untuk menyelamatkan
Apakah Anda ingin menguasai negara adidaya regex? . [1] pelajari bab buku, [2] pecahkan teka-teki kode, dan [3] tonton video bab pendidikan
Tutorial Terkait
- Sub Regex Python
Python Regex Sub - Bagaimana Cara Mengganti Pola dalam sebuah String?
Tonton video ini di YouTube
Kursus Python Regex
Insinyur Google adalah master ekspresi reguler. Mesin pencari Google adalah mesin pemroses teks besar yang mengekstraksi nilai dari triliunan halaman web.
Insinyur Facebook adalah master ekspresi reguler. Jejaring sosial seperti Facebook, WhatsApp, dan Instagram menghubungkan manusia melalui pesan teks.
Insinyur Amazon adalah master ekspresi reguler. Raksasa e-niaga mengirimkan produk berdasarkan deskripsi produk tekstual. Ekspresi reguler mengatur permainan saat pemrosesan teks memenuhi ilmu komputer.
Jika Anda juga ingin menjadi master ekspresi reguler, lihat kursus Python regex terlengkap di planet ini
Chris
Saat bekerja sebagai peneliti dalam sistem terdistribusi, Dr. Christian Mayer menemukan cintanya untuk mengajar siswa ilmu komputer
Untuk membantu siswa mencapai tingkat kesuksesan Python yang lebih tinggi, dia mendirikan situs web pendidikan pemrograman Finxter. com. Dia adalah penulis buku pemrograman populer Python One-Liners [NoStarch 2020], rekan penulis seri Coffee Break Python dari buku yang diterbitkan sendiri, penggemar ilmu komputer, pekerja lepas, dan pemilik salah satu dari 10 blog Python terbesar di dunia
Kesukaannya adalah menulis, membaca, dan coding. Tetapi hasrat terbesarnya adalah untuk melayani calon pembuat kode melalui Finxter dan membantu mereka meningkatkan keterampilan mereka. Anda dapat bergabung dengan akademi email gratisnya di sini