Sebelum teks bisa diolah, program perlu menjawab dua pertanyaan mendasar: apakah sebuah potongan teks ada di dalam string, dan di posisi mana teks itu berada. Setelah jawaban ditemukan, langkah lanjut yang paling umum adalah mengganti potongan tersebut dengan teks lain. Chapter ini merangkum perangkat pencarian dan penggantian milik tipe str — dari operator in yang paling sederhana sampai removeprefix() dan removesuffix() yang hadir di Python 3.9 — beserta strategi menghadapi perbedaan kapitalisasi.
Memeriksa Kehadiran Teks #
Untuk sekadar menjawab “ada atau tidak”, operator in adalah alat paling jujur: operator tersebut mengembalikan bool tanpa kompromi. Ketika posisi kemunculan ikut dibutuhkan, method find() melaporkannya:
kalimat = "Belajar Python itu menyenangkan"
print("Python" in kalimat)
print("Java" in kalimat)
print(kalimat.find("Python"))
print(kalimat.find("Java"))Output yang Dihasilkan:
True
False
8
-1Mari kita bedah keempat barisnya:
- Baris 3 (
"Python" in kalimat): operatorinmemeriksa kehadiran substring dan mengembalikanTrue; operatornot inmemeriksa kebalikannya. - Baris 4 (
"Java" in kalimat): substring yang absen membuatinmengembalikanFalse— bukan error, sehingga operator ini aman untuk pemeriksaan. - Baris 5 (
find("Python")): posisi yang dilaporkan adalah8, index karakterPpertama — delapan karakterBelajar(termasuk satu spasi) mendahului kataPython. - Baris 6 (
find("Java")): pencarian yang gagal membuatfind()mengembalikan-1.
Perilaku find() versus index() sudah kita bandingkan pada Chapter String Methods: find() mengembalikan -1 saat tidak ketemu, sedangkan index() memicu ValueError. Untuk pemeriksaan kehadiran murni, in tetap yang paling terbaca niatnya — find() >= 0 bekerja tetapi bertele-tele.
Mengganti Teks dengan replace() #
Method replace() mengganti setiap kemunculan substring lama dengan substring baru, dan mengembalikan string hasil — ingat bahwa string asal tidak pernah berubah. Argument ketiga yang bersifat opsional membatasi jumlah penggantian dari kiri:
teks = "satu dua satu tiga satu"
print(teks.replace("satu", "SATU"))
print(teks.replace("satu", "SATU", 2))Output yang Dihasilkan:
SATU dua SATU tiga SATU
SATU dua SATU tiga satuPemanggilan tanpa batas mengganti ketiga kemunculan "satu", sedangkan replace("satu", "SATU", 2) berhenti setelah dua penggantian — kemunculan ketiga dibiarkan apa adanya. Perhatikan pula bahwa string kosong sebagai pengganti, replace("satu", ""), merupakan cara cepat menghapus sebuah substring dari seluruh teks.
Strategi Pencarian Tanpa Peduli Kapitalisasi #
Semua alat di atas membandingkan karakter secara persis: P dan p adalah dua karakter berbeda. Ketika sumber teks tidak konsisten kapitalisasinya, strategi standarnya adalah menormalkan kedua sisi dengan lower() sebelum membandingkan:
kalimat = "Belajar PYTHON Setiap Hari"
target = "python"
print(target in kalimat)
print(target in kalimat.lower())Output yang Dihasilkan:
False
TruePencarian "python" in kalimat gagal karena teks aslinya berhuruf besar semua. Menormalkan kalimat dengan lower() membuat pencarian menemukan kata tersebut tanpa peduli kapitalisasi aslinya. Pola yang sama berlaku untuk find(), replace(), startswith(), dan endswith() — normalisasi dulu, baru operasi.
removeprefix() dan removesuffix() #
Dua method termuda pada str — hadir sejak Python 3.9 — menjawab kebutuhan spesifik: membuang awalan atau akhiran tertentu jika memang ada. Bedanya dengan replace(): kedua method ini hanya memotong sekali di ujung, dan tidak melakukan apa-apa bila awalan/akhiran tidak cocok:
nama_file = "laporan-penjualan.csv"
print(nama_file.removeprefix("laporan-"))
print(nama_file.removesuffix(".csv"))Output yang Dihasilkan:
penjualan.csv
laporan-penjualanSebelum Python 3.9, pekerjaan semacam ini ditulis dengan slicing bersyarat seperti nama_file[8:] if nama_file.startswith("laporan-") else nama_file — fungsional tetapi bertele-tele. Method removeprefix() dan removesuffix() membuat niat kode terbaca langsung: buang awalan laporan-, buang akhiran .csv.
Sebagai penutup, ingat kembali hukum yang berlaku pada seluruh chapter ini: replace(), removeprefix(), dan removesuffix() semuanya mengembalikan string baru. Tanpa assignment seperti teks = teks.replace("lama", "baru"), hasil penggantian hilang begitu baris selesai dievaluasi.