Jadi saya memiliki daftar panjang string dalam format yang sama, dan saya ingin menemukan "." Yang terakhir. karakter di setiap karakter, dan ganti dengan ". -". Saya sudah mencoba menggunakan rfind, tetapi sepertinya saya tidak dapat menggunakannya dengan benar untuk melakukan ini.
104
Jawaban:
Ini harus melakukannya
sumber
Untuk mengganti dari kanan:
Digunakan:
sumber
replacements=None
parameter sepertinya kesalahan bagi saya karena jika parameter dihilangkan fungsi akan memberikan kesalahan (dicoba dengan Python 2.7). Saya akan menyarankan untuk menghapus nilai default, mengaturnya ke -1 (untuk penggantian tanpa batas) atau lebih baik membuatnyareplacements=1
(yang menurut saya harus menjadi perilaku default untuk fungsi khusus ini sesuai dengan apa yang diinginkan OP). Menurut dokumen , parameter ini opsional, tetapi harus berupa int jika diberikan.". -".join("asd.asd.asd.".rsplit(".", 1))
. Yang Anda lakukan adalah melakukan pemisahan string dari sisi kanan untuk 1 kejadian dan menggabungkan string lagi menggunakan penggantinya.Saya akan menggunakan regex:
sumber
\.(?=[^.]*$)
Satu baris akan menjadi:
str=str[::-1].replace(".",".-",1)[::-1]
sumber
.replace
dengan string terbalik. Kedua string yang diteruskanreplace
harus dibalik juga. Jika tidak, saat Anda membalikkan string untuk kedua kalinya, huruf yang baru saja Anda sisipkan akan terbalik. Anda hanya dapat menggunakan ini jika Anda mengganti satu huruf dengan satu huruf, dan bahkan kemudian saya tidak akan memasukkan ini ke dalam kode Anda jika seseorang harus mengubahnya di masa depan dan mulai bertanya-tanya mengapa ada kata yang ditulis sdrawkcab.Anda dapat menggunakan fungsi di bawah ini yang menggantikan kemunculan pertama kata dari kanan.
sumber
# jika Anda ingin menemukan indeks kemunculan terakhir dari string apa pun, Dalam kasus kami, kami #akan menemukan indeks kemunculan terakhir dengan
# hasilnya akan menjadi 44, karena indeks dimulai dari 0.
sumber
Pendekatan naif:
Jawaban Aditya Sihag dengan satu
rfind
:sumber
a
?'. -'
output.replace_right
jauh lebih baik)