Kursus Python / Mengolah string dengan indeks, slice, split, dan join

String adalah nilai teks berurutan yang dapat dibaca melalui indeks dan slice. String tidak dapat diubah di tempat, sehingga hasil metode seperti strip() dan replace() harus digunakan atau disimpan jika Anda ingin memakai teks yang telah diolah.

Kenali posisi karakter dan batas slice

Indeks 0 menunjuk karakter pertama, sedangkan -1 menunjuk karakter terakhir. Slice text[start:stop] mengambil bagian mulai start sampai sebelum stop. Perhatikan batas akhir yang tidak disertakan agar hasil tidak bergeser satu karakter.

text = "Python"
print(text[0], text[-1], text[1:4])

Hasilnya P n yth. text[1:4] mengambil posisi 1, 2, dan 3. Indeks tunggal yang di luar rentang, misalnya text[99], menghasilkan IndexError; slice seperti text[:99] mengembalikan bagian yang tersedia. Pada string kosong, bahkan indeks 0 tidak tersedia.

Panjang string menghitung titik kode Unicode, bukan jumlah byte. Satu karakter yang tampak di layar dapat terdiri dari beberapa titik kode, misalnya huruf dengan tanda gabung atau rangkaian emoji. Pemotongan berdasarkan indeks tidak selalu sama dengan memotong satu karakter visual. Referensi tipe teks str menjelaskan string sebagai urutan Unicode dan menyediakan rincian metodenya.

Bersihkan dan format satu masukan lengkap

Gunakan Python 3.12 atau lebih baru. Simpan kode berikut sebagai strings.py dengan encoding UTF-8 di folder latihan. Tidak perlu memasang paket atau menyiapkan berkas data. Jalankan python strings.py menggunakan interpreter lingkungan proyek. Di luar lingkungan virtual pada macOS atau Ubuntu, perintah dapat bernama python3.

raw = "  lunch,8000  "
clean = raw.strip()
name, amount_text = clean.split(",")
amount = int(amount_text)
print(clean)
print(name.upper())
print(f"{name}: {amount:,} KRW")
print("-".join(["2026", "10", "17"]))

Keluaran yang diharapkan:

lunch,8000
LUNCH
lunch: 8,000 KRW
2026-10-17

raw memuat spasi di kedua ujungnya. strip() menghasilkan teks tanpa spasi tepi, lalu split(",") menghasilkan dua bagian yang ditempatkan pada name dan amount_text. Setelah jumlah diubah menjadi integer, program menampilkan teks bersih, nama huruf besar, dan jumlah berformat. Baris terakhir menyambung tiga string dengan tanda hubung; operasi tersebut membuat teks, bukan memeriksa apakah nilainya merupakan tanggal yang valid.

Pilih split, join, dan format sesuai struktur data

split() memecah string menjadi list, sedangkan join() menggabungkan kumpulan string dengan pemisah tertentu. Pada contoh, pemisah "-" berada sebelum .join(...). Setiap unsur yang digabung harus berupa string; angka perlu diubah secara sengaja, misalnya dengan str().

Penugasan name, amount_text = ... memerlukan tepat dua bagian. Jika koma hilang, hanya ada satu bagian. Jika nama sendiri memuat koma, jumlah bagian dapat menjadi tiga. Keduanya gagal saat dibongkar ke dua variabel. strip() di awal hanya membersihkan tepi seluruh string; spasi pada nama sebelum koma masih dapat tertinggal karena setiap kolom belum dibersihkan secara terpisah.

Ini adalah format sederhana yang sudah diketahui, bukan pembaca CSV umum. split(",") tidak memahami koma di dalam tanda kutip atau kolom beberapa baris. Untuk berkas CSV, gunakan modul csv dalam pustaka standar yang memahami aturan pemisah dan pengutipan. Setelah parsing, Anda tetap harus memeriksa jumlah kolom serta makna nilainya.

F-string cocok untuk membuat kalimat keluaran yang dibaca manusia. Jangan menyisipkan masukan eksternal ke perintah SQL dengan penggabungan string atau f-string; nilai basis data disampaikan melalui parameter yang didukung driver. Memformat teks tampilan dan membentuk kueri adalah dua pekerjaan dengan aturan berbeda.

Pertahankan sumber dan periksa kasus batas

Memanggil raw.strip() tanpa menyimpan hasilnya tidak mengubah raw. Hal yang sama berlaku untuk replace(): gunakan nilai yang dikembalikan. Nama raw dan clean membantu membedakan masukan asli dari hasil pembersihan. Penugasan hasil ke nama yang sama diperbolehkan, tetapi bukan berarti objek string lama berubah di tempat.

  1. Tambahkan spasi di kedua ujung nilai raw. Setelah menjalankan ulang, clean dan empat baris keluaran harus tetap sama.
  2. Hapus koma dari masukan. Program menghasilkan ValueError ketika mencoba menempatkan satu bagian ke dua variabel. Kembalikan masukan " lunch,8000 " sebelum meneruskan.
  3. Coba penugasan text[0] = "p" pada contoh pertama. Python menghasilkan TypeError karena unsur string tidak dapat diganti di tempat. Hapus baris percobaan tersebut dan jalankan ulang.
  4. Coba jumlah bukan angka seperti lunch,abc. Pembagian kolom berhasil, tetapi konversi int() gagal. Ini menunjukkan bahwa pemisahan teks belum sama dengan validasi nilai.

Jumlah negatif dan nama kosong juga belum ditolak oleh contoh ini. Tambahkan aturan aplikasi secara terpisah bila masukan harus memenuhi batas tersebut. Untuk alur teks-ke-angka, bandingkan dengan latihan input, konversi int, dan keluaran, lalu tentukan di langkah mana kegagalan perlu ditangani.