pythonstringdata-cleaningMenengah4 mnt baca

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

python
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 kata

Penting: 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.

python
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

python
baris = "Andi,25,Jakarta"
kolom = baris.split(",")   # ["Andi", "25", "Jakarta"]
print(kolom[1])            # 25

tanggal = "-".join(["2026", "10", "08"])
print(tanggal)  # 2026-10-08

split 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), sedangkan split(" ") memecah di tiap satu spasi. Untuk membersihkan teks berantakan, versi tanpa argumen hampir selalu lebih aman.

f-string: laporan rapi tanpa ribet

python
nama = "Budi"
total = 125000
print(f"{nama} belanja Rp{total:,}")  # Budi belanja Rp125,000
print(f"Rata-rata: {87.456:.1f}")     # Rata-rata: 87.5

Format :, 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.

python
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.

python
print("Kopi" == "kopi")   # False, padahal maksudnya sama!

BENAR: Samakan format sebelum dibandingkan:

python
print("Kopi".lower() == "kopi".lower())  # True

SALAH: Menggabungkan banyak string dengan + di dalam loop (lambat dan berantakan).

python
hasil = ""
for kata in ["2026", "10", "08"]:
    hasil += kata + "-"   # "2026-10-08-", ada sisa strip di ujung

BENAR: Kumpulkan di list, gabung sekali dengan join:

python
hasil = "-".join(["2026", "10", "08"])  # "2026-10-08", bersih

SALAH: Mengecek awalan teks dengan slicing manual.

python
if nomor[0:3] == "+62":   # jalan, tapi rawan salah hitung indeks
    ...

BENAR: Pakai method yang memang dibuat untuk itu:

python
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?