Mengolah Teks dengan String
split, join, strip, f-string: jurus bersih-bersih data teks yang berantakan.
String: data teks itu data kotor
Analogi singkat: data teks seperti sayur dari pasar, datang dengan tanah menempel. Nama produk diketik "KOPI Tubruk", "kopi tubruk ", "Kopi-Tubruk": maksudnya sama, tulisannya beda, dan komputer menganggap ketiganya beda. Sebelum dianalisis, teks harus "dicuci": buang spasi liar, samakan huruf, rapikan format. Method string adalah alat cucinya.
Kenapa ini penting untuk data? Karena sebagian besar data mentah berbentuk teks: nama, alamat, kategori, komentar. Analisis yang gagal membersihkan teks akan menghitung "Kopi" dan "kopi" sebagai dua produk berbeda, dan laporannya salah tanpa terlihat salah. Membersihkan string adalah separuh pekerjaan data cleaning.
Contoh 1: empat method pencuci utama
teks = " Kopi Tubruk "
print(teks.strip()) # "Kopi Tubruk", buang spasi tepi
print(teks.lower()) # " kopi tubruk "
print(teks.upper()) # " KOPI TUBRUK "
print(teks.replace("Tubruk", "Susu")) # " Kopi Susu ", ganti kataPenting: method string TIDAK mengubah string asli (string itu immutable), ia mengembalikan string baru. Jadi hasilnya harus ditangkap di variabel, kalau tidak, cucianmu terbuang sia-sia.
nama = " kopi "
nama.strip() # hasilnya dibuang, nama tetap " kopi "
nama = nama.strip() # BENAR: tangkap hasilnya
print(nama) # "kopi"Contoh 2: split dan join, belah dan gabung
baris = "Andi,25,Jakarta"
kolom = baris.split(",") # ["Andi", "25", "Jakarta"]
print(kolom[1]) # 25
tanggal = "-".join(["2026", "10", "08"])
print(tanggal) # 2026-10-08split memecah satu string jadi list (inilah cara manual membaca satu baris CSV sebelum kenal pandas), join kebalikannya: menggabungkan list jadi satu string dengan pemisah di antaranya.
Catatan teknis:
split()tanpa argumen memecah di semua spasi sekaligus (termasuk spasi ganda dan tab), sedangkansplit(" ")memecah di tiap satu spasi. Untuk membersihkan teks berantakan, versi tanpa argumen hampir selalu lebih aman.
f-string: laporan rapi tanpa ribet
nama = "Budi"
total = 125000
print(f"{nama} belanja Rp{total:,}") # Budi belanja Rp125,000
print(f"Rata-rata: {87.456:.1f}") # Rata-rata: 87.5Format :, memberi pemisah ribuan, :.1f membulatkan satu desimal. Untuk laporan data, f-string hampir selalu lebih rapi daripada menggabung string dengan +.
Contoh 3 (realistis): normalisasi kolom nama produk
Data kotor beneran: satu kolom, empat gaya penulisan. Satu baris list comprehension membereskannya.
kotor = [" KOPI tubruk", "kopi Tubruk ", "KOPI TUBRUK", "Kopi Tubruk"]
bersih = [" ".join(k.strip().lower().split()) for k in kotor]
print(bersih) # ['kopi tubruk', 'kopi tubruk', 'kopi tubruk', 'kopi tubruk']
print(set(bersih)) # {'kopi tubruk'}, sekarang seragam!Alurnya: strip() buang spasi tepi, lower() samakan huruf, split() pecah jadi kata (spasi ganda ikut hilang), join gabung kembali dengan satu spasi. Pola bersihkan-dulu-baru-hitung ini dipakai setiap hari oleh data analyst, dan nanti di pandas bentuknya adalah .str.lower() yang cara kerjanya sama persis.
Kesalahan umum pemula
SALAH: Membandingkan teks tanpa normalisasi dulu.
print("Kopi" == "kopi") # False, padahal maksudnya sama!BENAR: Samakan format sebelum dibandingkan:
print("Kopi".lower() == "kopi".lower()) # TrueSALAH: Menggabungkan banyak string dengan + di dalam loop (lambat dan berantakan).
hasil = ""
for kata in ["2026", "10", "08"]:
hasil += kata + "-" # "2026-10-08-", ada sisa strip di ujungBENAR: Kumpulkan di list, gabung sekali dengan join:
hasil = "-".join(["2026", "10", "08"]) # "2026-10-08", bersihSALAH: Mengecek awalan teks dengan slicing manual.
if nomor[0:3] == "+62": # jalan, tapi rawan salah hitung indeks
...BENAR: Pakai method yang memang dibuat untuk itu:
if nomor.startswith("+62"): # jelas maksudnya, tanpa hitung indeks
...Tantangan
Normalisasi nomor telepon
Diberi list nomor: ["0812-3456-789", "0812 3456 789", "+628123456789"]. Bersihkan semuanya jadi format seragam 08123456789 memakai replace/strip. Petunjuk: hapus "-", spasi, lalu ganti awalan "+62" jadi "0".
Kuis Bab
Uji pemahamanmu: Bab 1: Dasar Python
Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".
1.Apa output dari print(type(5 / 2))?
2.Mana nama variabel yang valid di Python?
3.Apa hasil dari 2 + 3 * 4 di Python?
4.Apa output dari print("3" + str(4))?
5.Blok if mana yang TIDAK akan dieksekusi?