DataLens

Method string: split, join, strip, replace

Bersihkan dan bentuk ulang teks yang berantakan dengan method string bawaan Python, alat sehari-hari untuk membersihkan data.

Level: Dasar · 9 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Teks di dunia nyata itu berantakan. Nama pelanggan datang sebagai " ayu LESTARI ", kota sebagai "jakarta", "Jakarta ", dan "JAKARTA", dan satu baris data utuh bisa datang sebagai satu string panjang seperti "Ayu;Jakarta;285000". Sebelum kamu bisa menghitung, mengelompokkan, atau membandingkan apa pun, kamu harus membersihkannya.

String Python dilengkapi puluhan method bawaan: fungsi yang melekat pada sebuah nilai dan dipanggil dengan titik, seperti name.upper(). Modul ini membahas method yang akan kamu pakai setiap minggu.

Method mengembalikan string baru

Ingat bahwa string bersifat immutable: tidak bisa diubah di tempatnya. Jadi method string tidak pernah mengubah string aslinya; method itu mengembalikan string baru:

name = "ayu lestari"
name.upper()
print(name)
shout = name.upper()
print(shout)
ayu lestari
AYU LESTARI

Baris kedua menghitung "AYU LESTARI" lalu membuangnya, karena tidak ada yang menyimpan hasilnya. Ini bug string yang paling umum dari semuanya.

Awas

name.strip() di barisnya sendiri tidak melakukan apa pun yang berguna. Simpan hasilnya: name = name.strip().

Mengubah huruf besar-kecil

Kota yang sama bisa datang sebagai jakarta, Jakarta, atau JAKARTA tergantung siapa yang mengetiknya. Bagi manusia jelas itu tempat yang sama, tapi bagi Python itu tiga string yang berbeda, jadi hitungan pelanggan per kota akan menampilkan tiga Jakarta yang terpisah. Method-method ini memberimu string dengan gaya huruf kapital yang seragam:

city = "jaKarTA"
print(city.upper())
print(city.lower())
print(city.title())
print("budi santoso".capitalize())
JAKARTA
jakarta
Jakarta
Budi santoso

.title() mengapitalkan huruf pertama setiap kata, sedangkan .capitalize() hanya mengapitalkan huruf pertama dari seluruh string. Mengubah ke satu jenis huruf dengan .lower() adalah trik standar sebelum membandingkan teks, sehingga "Jakarta", "JAKARTA", dan "jakarta" semuanya cocok.

Memangkas whitespace dengan strip

Whitespace berarti spasi, tab, dan baris baru. Ia menyelinap masuk dari form, spreadsheet, dan copy-paste, dan tidak terlihat, yang membuatnya berbahaya: "Jakarta " tidak sama dengan "Jakarta".

raw = "   Jakarta \n"
print(f"[{raw.strip()}]")
print(f"[{raw.lstrip()}]")
print(f"[{raw.rstrip()}]")
[Jakarta]
[Jakarta
]
[   Jakarta]

.strip() membuang whitespace dari kedua ujung, .lstrip() hanya dari kiri, .rstrip() hanya dari kanan. Whitespace di tengah tetap ada. Kamu juga bisa membuang karakter tertentu: "***SALE***".strip("*") menghasilkan "SALE".

Mencari dan mengganti

Begitu teksnya bersih, kamu sering perlu bertanya tentang isinya. Apakah catatan pengiriman ini menyebut Jakarta? Berapa kali? Apakah kode produknya diawali awalan yang benar? Dan kadang kamu perlu mengganti satu kata dengan kata lain di mana-mana, misalnya saat gudang pindah ke kota baru. Python punya method untuk masing-masing:

note = "Ship to Jakarta. Jakarta warehouse only."
print(note.replace("Jakarta", "Bandung"))
print(note.count("Jakarta"))
print(note.find("warehouse"))
print("Jakarta" in note)
print(note.startswith("Ship"), note.endswith("."))
Ship to Bandung. Bandung warehouse only.
2
25
True
True True

Kita bahas output-nya baris per baris:

Memecah teks menjadi potongan

.split() memotong string menjadi list berisi string-string yang lebih kecil. Kamu akan mempelajari list dengan benar sebentar lagi; untuk sekarang, anggap list sebagai kumpulan berurutan yang ditulis dengan kurung siku.

row = "Ayu Lestari;Jakarta;Consumer;285000"
parts = row.split(";")
print(parts)
print(parts[0])
print(parts[3])
['Ayu Lestari', 'Jakarta', 'Consumer', '285000']
Ayu Lestari
285000

Argumennya adalah pemisah (separator): teks tempat string dipotong. Pemisahnya sendiri hilang. Tanpa argumen, .split() memotong di setiap deretan whitespace dan mengabaikan spasi berlebih, cocok sekali untuk kalimat yang berantakan:

print("  Arabica   Gayo  250g ".split())
['Arabica', 'Gayo', '250g']

Perhatikan bahwa parts[3] adalah string "285000", bukan angka. Memecah teks selalu menghasilkan teks; kamu akan mengonversinya dengan int() di modul berikutnya.

Menyatukan kembali potongan-potongan

.join() adalah kebalikan dari split: ia merekatkan list berisi string, dengan string tempat kamu memanggilnya ditaruh di antara setiap potongan:

cities = ["Jakarta", "Bandung", "Surabaya"]
print(", ".join(cities))
print(" | ".join(cities))
print("-".join("2024 10 05".split()))
Jakarta, Bandung, Surabaya
Jakarta | Bandung | Surabaya
2024-10-05

Sintaksnya terlihat terbalik pada awalnya: pemisah datang lebih dulu, lalu .join(list). Bacalah ", ".join(cities) sebagai "gabungkan cities dengan koma-spasi".

Merangkai method (chaining)

Karena setiap method mengembalikan string baru, kamu bisa langsung memanggil method lain pada hasilnya. Ini disebut chaining, dan dibaca dari kiri ke kanan seperti resep:

raw_name = "   aYU   lestari  "
clean = " ".join(raw_name.split()).title()
print(f"[{clean}]")
[Ayu Lestari]

Langkah demi langkah: .split() memecahnya menjadi kata-kata (membuang semua spasi berlebih), " ".join(...) menyatukan kata-kata itu lagi dengan satu spasi, dan .title() membetulkan huruf kapitalnya. Pola persis inilah yang membersihkan ribuan nama di proyek sungguhan.

Mengapa ini penting untuk kode bersih

Pembersihan teks adalah tempat bug data bersembunyi: dua pelanggan yang "berbeda" padahal sebenarnya "Ayu" dan "Ayu ". Bersihkan teksmu sekali saja, sedini mungkin, dengan rangkaian method yang jelas, lalu simpan nilai yang sudah bersih. Rangkaian pendek enak dibaca; kalau sudah lebih dari tiga atau empat langkah, pecah ke beberapa baris dengan nama variabel yang baik supaya setiap langkah terlihat.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Angka, operator matematika, dan konversi tipe →