Sebagian besar data yang diolah program berbentuk teks: nama pengguna, alamat, pesan status, sampai isi berkas konfigurasi. Chapter String pada section Variabel dan Tipe Data telah memperkenalkan tipe str secara singkat; sekarang kita membedah tipe data tersebut lebih dalam. Pada Chapter ini kita berlatih tiga keterampilan dasar yang dipakai setiap hari: membuat string dari berbagai bentuk tanda kutip, menggabungkan dua string dengan operator, dan menggabungkan banyak string sekaligus dengan cara yang efisien.
Membuat String dengan Tanda Kutip #
Python mengenal dua tanda kutip untuk membuat string satu baris: kutip tunggal ('...') dan kutip ganda ("..."). Keduanya menghasilkan object str yang identik, sehingga pilihan menjadi urusan gaya penulisan. Kebebasan ini berguna ketika teks itu sendiri berisi salah satu jenis tanda kutip: teks Dia berkata "oke" lebih praktis dibungkus kutip tunggal agar tanda kutip ganda di dalamnya tidak perlu di-escape.
Untuk string yang membentang beberapa baris, Python menyediakan tanda kutip tiga ("""...""" atau '''...'''). Mari kita lihat ketiganya dalam satu program:
nama = "Budi"
kota = 'Jakarta'
pesan = """Belajar Python
bersama kita."""
print(nama)
print(kota)
print(pesan)Output yang Dihasilkan:
Budi
Jakarta
Belajar Python
bersama kita.Mari kita telaah baris-baris kode di atas:
- Baris 1 (
nama = "Budi"): interpreter Python membuat objectstrberisi karakterB,u,d,i, lalu mengikat object tersebut ke variabelnama. - Baris 2 (
kota = 'Jakarta'): mekanisme sama persis dengan baris 1; tanda kutip tunggal dan ganda menghasilkan objectstryang setara. - Baris 3-4 (
pesan = """..."""): kutip tiga membuat string multiline; karakter pindah baris setelahPythonmenjadi bagian dari isi string, bukan akhir pernyataan. - Baris 6-8 (
print(...)): fungsiprint()mencetak isi ketiga variabel; stringpesantercetak dua baris karena memang menyimpan satu karakter pindah baris.
Selain tanda kutip, nilai dari tipe lain dapat diubah menjadi string dengan fungsi str():
stok = 42
print(stok)
print(str(stok))
print(len(str(stok)))Output yang Dihasilkan:
42
42
2Perhatikan len(str(stok)) menghasilkan 2, bukan 42. Fungsi str() mengubah angka 42 menjadi teks "42" yang terdiri dari dua karakter, dan fungsi len() menghitung jumlah karakter. Konversi ini wajib ketika kita ingin menggabungkan angka dengan teks menggunakan operator yang akan kita bahas berikutnya.
Menggabungkan dengan Operator + dan * #
Dua operator bekerja langsung pada string. Operator + menggabungkan dua string menjadi string baru, sedangkan operator * mengulang string sebanyak jumlah yang diberikan:
depan = "Belajar"
belakang = "Python"
gabung = depan + " " + belakang
print(gabung)
garis = "-" * 20
print(garis)
print("abc" * 3)Output yang Dihasilkan:
Belajar Python
--------------------
abcabcabcMari kita bedah kode di atas:
- Baris 4 (
gabung = depan + " " + belakang): interpreter membaca nilaidepan, menempelkan string" "di tengah, lalubelakang, menghasilkan string baru"Belajar Python"yang disimpan kegabung. - Baris 7 (
garis = "-" * 20): operator*mengulang string"-"sebanyak 20 kali; pola ini sering dipakai untuk mencetak pemisah di output terminal. - Baris 9 (
print("abc" * 3)): string"abc"berulang tiga kali menjadi"abcabcabc".
Operator + hanya menerima kedua operan berupa string. Ekspresi "Stok: " + 10 memicu TypeError karena 10 bertipe int; angka tersebut harus dikonversi terlebih dahulu menjadi "Stok: " + str(10).
String Bersifat Immutable #
Perlu diingat kembali bahwa string bersifat immutable: isi sebuah object str tidak dapat diubah setelah object tersebut dibuat. Operator + dan * tidak pernah memodifikasi string yang sudah ada, melainkan selalu membangun string baru. Akibatnya, upaya mengubah satu karakter di posisi tertentu akan ditolak interpreter Python:
>>> nama = "budi"
>>> nama[0] = "B"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignmentUntuk mengubah isi, kita membangun string baru lalu mengikatnya kembali ke variabel, misalnya nama = "B" + nama[1:]. Materi pengambilan bagian string seperti nama[1:] dibahas tuntas pada Chapter Indexing dan Slicing String.
Menggabungkan Banyak String dengan join() #
Operator + cocok untuk dua sampai beberapa string. Namun ketika jumlah string yang digabungkan besar, penambahan berantai dengan + (atau += di dalam loop) menjadi lambat. Karena string immutable, setiap penggabungan menyalin ulang seluruh isi string lama ke object baru; menggabungkan 10.000 string satu per satu berarti melakukan puluhan ribu kali penyalinan.
Python menyediakan method str.join() untuk kasus ini. Method tersebut dipanggil pada string pemisah, menerima satu argument berupa kumpulan string (misalnya list), lalu membangun hasil dalam satu kali penyalinan:
buah = ["mangga", "jeruk", "pisang"]
kalimat = ", ".join(buah)
print(kalimat)
path_folder = "/".join(["home", "budi", "dokumen"])
print(path_folder)Output yang Dihasilkan:
mangga, jeruk, pisang
home/budi/dokumenMari kita amati cara kerjanya:
- Baris 3 (
", ".join(buah)): string pemisah", "disisipkan di antara setiap elemen listbuah; hasilnya satu stringmangga, jeruk, pisang. - Baris 7 (
"/".join(...)): pola yang sama dengan pemisah"/", teknik yang lazim untuk merangkai path folder di sistem Unix.
Dengan tiga keterampilan ini, kita sudah bisa membangun teks dari bagian-bagian kecil. Bab berikutnya membahas cara mengambil kembali bagian tertentu dari sebuah string melalui indexing dan slicing.