Belajar Python String Manipulation Lengkap: f-String, Split, Join, Slicing

string adalah tipe data yang paling sering kita jumpai dalam pemrograman sehari-hari. mulai dari membersihkan data hasil web scraping, mengolah respons JSON dari REST API, membaca baris file teks, hingga memformat laporan angka menjadi format rupiah yang rapi ๐
waktu awal belajar Python, saya sempat bingung kenapa karakter di string tidak bisa diganti langsung seperti array di bahasa lain. ternyata ada aturan penting bernama immutability yang membuat penanganan teks di Python sangat unik sekaligus aman.
di artikel ini kita pelajari seluruh operasi manipulasi string di Python dari dasar: memahami indexing dan rumus slicing, f-string modern dengan format mata uang, fungsi pembersihan teks seperti split, join, dan strip, sampai studi kasus nyata membersihkan data kontak yang berantakan.
sebelum mulai, jika kalian ingin mengingat kembali pengenalan tipe data primitif lainnya di Python, silakan baca belajar python tipe data dan variabel.
1. Sifat Dasar String: Immutability dan Indexing
string di Python pada dasarnya adalah urutan karakter. setiap karakter memiliki nomor urut (index) yang bisa kita akses dengan tanda kurung siku []:
bahasa = "Python"
# Index positif (mulai dari 0 di sisi kiri)
print(bahasa[0]) # Output: P
print(bahasa[2]) # Output: t
# Index negatif (mulai dari -1 di sisi kanan / belakang)
print(bahasa[-1]) # Output: n
print(bahasa[-2]) # Output: o
Aturan Emas: String itu Immutable (Tidak Dapat Diubah)
string di Python tidak bisa diubah sebagian. kode berikut akan memicu error:
nama = "Andi"
# nama[0] = "B" โ TypeError: 'str' object does not support item assignment
jika kalian ingin mengubah “Andi” menjadi “Budi”, kalian harus membuat string baru, misalnya: nama = "B" + nama[1:] atau memakai method seperti .replace().
2. Teknik Slicing: Rumus [start:stop:step]
slicing digunakan untuk memotong sebagian teks dari string. rumusnya:
string[awal : akhir_sebelum : langkah]
- start: index posisi awal pemotongan (inklusif)
- stop: index batas akhir pemotongan (karakter di index ini tidak ikut diambil)
- step: jarak langkah loncatan (default bernilai 1)
teks = "Belajar Python Mudah"
# Mengambil kata pertama (index 0 sampai sebelum 7)
print(teks[0:7]) # Output: Belajar
# Jika start kosong, otomatis mulai dari awal
print(teks[:7]) # Output: Belajar
# Mengambil teks dari index 8 sampai paling akhir
print(teks[8:]) # Output: Python Mudah
# Mengambil 5 karakter terakhir
print(teks[-5:]) # Output: Mudah
# Mengambil karakter dengan loncatan 2 langkah
print(teks[::2]) # Output: BldrPto Mdh
# Trik populer: membalik urutan string (Reverse)
print(teks[::-1]) # Output: gladuM nohtyP rajaleB
rumus teks[::-1] adalah cara paling cepat dan elegan untuk membalik string di Python tanpa perlu membuat perulangan manual.
3. f-String Modern: Format Teks dan Angka
sejak Python 3.6, cara terbaik menggabungkan variabel ke dalam string adalah memakai f-string (ditandai dengan huruf f di depan tanda kutip):
nama = "Budi"
umur = 25
pekerjaan = "Web Developer"
# Menggabungkan variabel dengan bersih
pesan = f"Halo, saya {nama}, usia {umur} tahun, bekerja sebagai {pekerjaan}."
print(pesan)
kalian bahkan bisa menjalankan operasi aritmatika atau fungsi langsung di dalam kurung kurawal {}:
harga = 50000
qty = 3
print(f"Total bayar: Rp {harga * qty}") # Total bayar: Rp 150000
Format Angka dan Desimal dengan f-String
f-string juga menyediakan format bawaan yang sangat berguna untuk laporan:
nilai = 1234567.8910
# Format pemisah ribuan dengan koma
print(f"Jumlah: {nilai:,.2f}")
# Output: Jumlah: 1,234,567.89 (dibulatkan 2 desimal)
# Format persentase otomatis
persen = 0.856
print(f"Akurasi: {persen:.1%}")
# Output: Akurasi: 85.6%
# Padding angka (misal nomor faktur 5 digit dengan leading zero)
faktur = 42
print(f"INV-{faktur:05d}")
# Output: INV-00042
4. Pembersihan Teks: strip, lstrip, dan rstrip
saat membaca file atau menerima input formulir dari pengguna, teks sering kali tercemar spasi ekstra atau karakter baris baru (\n). gunakan fungsi keluarga strip:
input_user = " [email protected] \n\t "
# Menghapus spasi dan whitespace di kedua sisi
email_bersih = input_user.strip()
print(f"'{email_bersih}'") # '[email protected]'
# Menghapus karakter tertentu saja
kode = "###PRODUK-101###"
print(kode.strip("#")) # PRODUK-101
print(kode.lstrip("#")) # PRODUK-101### (hanya sisi kiri)
print(kode.rstrip("#")) # ###PRODUK-101 (hanya sisi kanan)
5. Memecah dan Menggabungkan: split dan join
dua fungsi ini berpasangan seperti gunting dan lem:
split(pemisah)memecah string menjadi listjoin(list)menyatukan kembali list menjadi sebuah string
# Memecah string berdasarkan koma
tag_mentah = "python, web, programming, tutorial"
daftar_tag = [tag.strip() for tag in tag_mentah.split(",")]
print(daftar_tag)
# Output: ['python', 'web', 'programming', 'tutorial']
# Menyatukan kembali dengan separator baru
hasil_gabung = " | ".join(daftar_tag)
print(hasil_gabung)
# Output: python | web | programming | tutorial
Mengapa .join() Lebih Baik daripada Tanda Tambah (+)?
jika kalian menggabungkan 1.000 string memakai + di dalam loop for, Python terpaksa membuat 1.000 objek baru di memori komputer. dengan method join(), Python menghitung total ukuran teks terlebih dahulu lalu mengalokasikan memorinya sekali jalan. performanya bisa 10 hingga 50 kali lebih kencang pada data besar.
6. Mengganti dan Mencari: replace, find, in
pesan = "Saya suka belajar Java dan Java sangat menyenangkan."
# Mengganti kata (case-sensitive)
pesan_baru = pesan.replace("Java", "Python")
print(pesan_baru)
# Output: Saya suka belajar Python dan Python sangat menyenangkan.
# Mengganti kata dengan batas jumlah (hanya ganti yang pertama)
print(pesan.replace("Java", "Python", 1))
# Memeriksa keberadaan kata kunci (mengembalikan True/False)
if "Python" in pesan_baru:
print("Topik artikel cocok!")
# Mencari index posisi kemunculan pertama kata
posisi = pesan_baru.find("belajar")
print(posisi) # Output: 10 (jika tidak ditemukan, mengembalikan -1)
7. Mengubah Huruf: upper, lower, title, capitalize
judul = "panduan lengkap belajar pyTHon"
print(judul.upper()) # PANDUAN LENGKAP BELAJAR PYTHON
print(judul.lower()) # panduan lengkap belajar python
print(judul.title()) # Panduan Lengkap Belajar Python
print(judul.capitalize()) # Panduan lengkap belajar python
fungsi .lower() sangat krusial saat kalian ingin melakukan pencarian teks yang tidak peduli huruf besar atau kecil (case-insensitive):
input_cari = "PYTHON"
data = "Tutorial belajar python dasar"
if input_cari.lower() in data.lower():
print("Data ditemukan!")
8. Validasi String: isdigit, isalpha, startswith
no_telepon = "08123456789"
kode_akses = "KODE123"
print(no_telepon.isdigit()) # True (semua angka)
print(kode_akses.isalpha()) # False (karena ada angka)
print(kode_akses.isalnum()) # True (kombinasi huruf dan angka)
url = "https://pemburukode.com"
print(url.startswith("https://")) # True
print(url.endswith(".com")) # True
9. Studi Kasus Nyata: Membersihkan Data Kontak Berantakan
bayangkan kalian menerima data mentah dari formulir pendaftaran seperti ini:
data_kotor = [
" Andi Pratama | 0812-3456-7890 | [email protected] ",
"budi santoso|0857 1234 5678|[email protected]\n",
" Citra Dewi | +62 813-9999-0000 | [email protected] "
]
data_bersih = []
for baris in data_kotor:
# 1. Bersihkan whitespace luar dan pecah berdasarkan pipa (|)
kolom = baris.strip().split("|")
# 2. Rapikan nama (Title Case)
nama = kolom[0].strip().title()
# 3. Standardisasi nomor telepon (hanya digit, awali 62)
no_hp = kolom[1].strip()
# buang spasi, tanda strip, dan plus
no_hp_bersih = "".join(karakter for karakter in no_hp if karakter.isdigit())
if no_hp_bersih.startswith("0"):
no_hp_bersih = "62" + no_hp_bersih[1:]
# 4. Standardisasi email ke huruf kecil
email = kolom[2].strip().lower()
data_bersih.append({
"nama": nama,
"telepon": no_hp_bersih,
"email": email
})
# Tampilkan hasil bersih
for kontak in data_bersih:
print(f"[{kontak['nama']}] HP: {kontak['telepon']} | Email: {kontak['email']}")
output yang dihasilkan rapi dan seragam:
[Andi Pratama] HP: 6281234567890 | Email: [email protected]
[Budi Santoso] HP: 6285712345678 | Email: [email protected]
[Citra Dewi] HP: 6281399990000 | Email: [email protected]
jika pembersihan data kalian membutuhkan pola yang lebih rumit (seperti validasi format regex email yang ketat), kalian bisa melanjutkannya dengan modul regex yang dibahas di belajar regex python re module.
Kesimpulan
| Operasi | Sintaks Utama | Contoh Hasil |
|---|---|---|
| Slicing | teks[0:5], teks[::-1] | Potong atau balik teks |
| f-String | f"Halo {nama}, Rp {angka:,}" | Format teks dan mata uang |
| Pembersihan | teks.strip(), lstrip(), rstrip() | Hapus spasi liar |
| Pecah / Gabung | teks.split(","), ", ".join(list) | Konversi string โ list |
| Ganti Kata | teks.replace("lama", "baru") | Substitusi kata |
| Ukuran Huruf | .upper(), .lower(), .title() | Standardisasi format teks |
| Pemeriksaan | .isdigit(), .startswith(), in | Validasi tipe isi teks |
menguasai manipulasi string akan membuat proses pengolahan data, pembacaan file teks, dan pembuatan aplikasi web di Python menjadi jauh lebih cepat dan terhindar dari bug data kotor.
Baca Juga Mengenai :
Pertanyaan yang Sering Diajukan
Apakah string di Python bisa diubah nilainya (mutable)?
Tidak, string di Python bersifat immutable (tidak dapat diubah). Setiap kali kalian memanggil fungsi seperti replace(), upper(), atau strip(), Python tidak mengubah teks aslinya, melainkan membuat objek string baru di dalam memori.
Apa keunggulan f-string dibanding metode format lama di Python?
f-string (dikenalkan sejak Python 3.6) jauh lebih mudah dibaca karena ekspresi dan variabel ditulis langsung di dalam kurung kurawal, serta dievaluasi pada saat runtime sehingga performanya paling cepat dibanding operator modulo (%) atau method .format().
Bagaimana cara membalik urutan string (reverse) paling cepat di Python?
Cara paling ringkas dan cepat adalah memakai slicing dengan step negatif: teks[::-1]. Python akan membaca karakter dari ujung belakang ke depan tanpa perlu perulangan manual.
Apa perbedaan fungsi strip(), lstrip(), dan rstrip()?
strip() menghapus spasi atau karakter tertentu di awal dan akhir string. lstrip() (left strip) hanya menghapus bagian kiri/awal, sedangkan rstrip() (right strip) hanya menghapus spasi di bagian kanan/ujung string.
Kenapa harus memakai join() alih-alih operator tambah (+) saat menggabungkan banyak string?
Menggabungkan string dengan tanda tambah (+) di dalam perulangan membuat Python mengalokasikan memori baru di setiap putaran loop. Method .join() mengalokasikan memori satu kali secara keseluruhan di awal, sehingga jauh lebih hemat RAM dan jauh lebih cepat pada data besar.
Bagaimana cara mengecek apakah string hanya berisi angka?
Gunakan method teks.isdigit() atau teks.isnumeric(). Method ini mengembalikan nilai boolean True jika semua karakter di dalam string adalah digit angka, dan False jika ada huruf atau spasi.

