Data tekstual di dunia nyata sering berbentuk daftar yang dijadikan satu: baris alamat dipisah koma, kata-kata dipisah spasi, baris laporan dipisah pindah baris. Dua operasi split() dan join() adalah pasangan kebalikan yang menghubungkan dunia string dan dunia list: split() memecah satu string menjadi banyak potongan, join() merakit banyak potongan menjadi satu string. Menguasai keduanya berarti menguasai sebagian besar pekerjaan parsing teks sehari-hari.

Memecah String dengan split() #

Dipanggil tanpa argument, split() memecah string di setiap rangkaian whitespace (spasi, tab, pindah baris) dan membuang whitespace di ujung-ujung potongan. Jika diberi argument pemisah, string justru dipotong tepat di setiap kemunculan pemisah tersebut:

python
kalimat = "belajar python setiap hari"
print(kalimat.split())

data = "Budi,Jakarta,25"
print(data.split(","))

Output yang Dihasilkan:

text
['belajar', 'python', 'setiap', 'hari']
['Budi', 'Jakarta', '25']

Mari kita amati dua pemanggilan tersebut:

  1. kalimat.split(): hasilnya list berisi empat string; tanpa argument, spasi berlebih sekalipun tidak menghasilkan elemen kosong karena rangkaian whitespace dihitung satu pemisah.
  2. data.split(","): string dipotong tepat di tiap koma; pemisahnya hilang dari hasil. Perhatikan "25" tetap berupa string — split() tidak pernah mengubah tipe isinya, jadi konversi ke angka tetap tugas kita.

maxsplit dan rsplit #

Argument kedua split() membatasi jumlah potongan, dan rsplit() melakukan hal yang sama namun memotong dari kanan:

python
hari = "senin,selasa,rabu,kamis"

print(hari.split(",", 2))
print(hari.rsplit(",", 1))

Output yang Dihasilkan:

text
['senin', 'selasa', 'rabu,kamis']
['senin,selasa,rabu', 'kamis']

Pada split(",", 2), pemotongan berhenti setelah dua kali sehingga sisa string "rabu,kamis" tetap utuh sebagai satu elemen terakhir. Pola rsplit(",", 1) berguna saat hanya bagian akhir yang ingin dipisahkan — misalnya memisahkan nama berkas dari path panjang.

Memecah Per Baris dengan splitlines() #

Untuk teks multiline, method splitlines() memecah string di setiap batas baris dan tidak meninggalkan string kosong di akhir, tidak seperti split("\n"):

python
teks = "baris pertama\nbaris kedua\nbaris ketiga"

print(teks.splitlines())

Output yang Dihasilkan:

text
['baris pertama', 'baris kedua', 'baris ketiga']

Method splitlines() juga mengenali berbagai jenis batas baris — \n, \r\n, sampai \r — sehingga aman untuk teks yang berasal dari sistem operasi mana pun.

Merakit Kembali dengan join() #

Operasi kebalikannya sudah kita kenal pada Chapter Membuat dan Menggabungkan String, dan di sini perannya lengkap: join() mengubah list string menjadi satu string dengan pemisah pilihan kita:

python
buah = ["mangga", "jeruk", "pisang"]

print(", ".join(buah))
print(" + ".join(buah))

Output yang Dihasilkan:

text
mangga, jeruk, pisang
mangga + jeruk + pisang

Pola kerja keduanya berpasangan: teks.split(sep) lalu sep.join(list_hasil) mengembalikan string yang setara dengan teks. Contoh nyatanya adalah membenahi format nama: "budi santoso".title() menuntaskan kasus sederhana, tetapi kasus seperti membuang kata sambung membutuhkan siklus split() → olah list → join().

Jebakan Data CSV #

Format CSV (comma-separated values) tampak seperti kasus sempurna untuk split(","), dan untuk data sederhana memang begitu. Masalah muncul ketika satu kolom berisi teks yang sendirinya memuat koma, yang lazimnya dibungkus tanda kutip:

python
baris = 'Budi,"Santoso, Jaya",Jakarta'

kolom = baris.split(",")
print(kolom)
print(kolom[1])

Output yang Dihasilkan:

text
['Budi', '"Santoso', ' Jaya"', 'Jakarta']
"Santoso

Satu baris data yang seharusnya berisi tiga kolom terpecah menjadi empat elemen, dan kolom kedua berisi hasil yang salah. Aturan pembungkusan kutip pada CSV tidak bisa ditangani split() karena method tersebut tidak memahami konteks — method hanya melihat karakter pemisah.

Untuk data CSV yang sesungguhnya, gunakan module csv dari standard library yang menangani tanda kutip, pemisah, dan pindah baris dengan benar; materi lengkapnya dibahas pada Chapter Membaca dan Menulis CSV di section File Handling. Berpegang pada split() hanya untuk format sederhana yang kita kendalikan sendiri.

Dengan kemampuan memecah dan merakit, satu dunia pemrosesan teks terbuka: mencari, mengganti, dan membersihkan potongan-potongan tersebut — topik Chapter berikutnya.