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:

python
nama = "Budi"
kota = 'Jakarta'
pesan = """Belajar Python
bersama kita."""

print(nama)
print(kota)
print(pesan)

Output yang Dihasilkan:

text
Budi
Jakarta
Belajar Python
bersama kita.

Mari kita telaah baris-baris kode di atas:

  1. Baris 1 (nama = "Budi"): interpreter Python membuat object str berisi karakter B, u, d, i, lalu mengikat object tersebut ke variabel nama.
  2. Baris 2 (kota = 'Jakarta'): mekanisme sama persis dengan baris 1; tanda kutip tunggal dan ganda menghasilkan object str yang setara.
  3. Baris 3-4 (pesan = """..."""): kutip tiga membuat string multiline; karakter pindah baris setelah Python menjadi bagian dari isi string, bukan akhir pernyataan.
  4. Baris 6-8 (print(...)): fungsi print() mencetak isi ketiga variabel; string pesan tercetak dua baris karena memang menyimpan satu karakter pindah baris.

Selain tanda kutip, nilai dari tipe lain dapat diubah menjadi string dengan fungsi str():

python
stok = 42

print(stok)
print(str(stok))
print(len(str(stok)))

Output yang Dihasilkan:

text
42
42
2

Perhatikan 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:

python
depan = "Belajar"
belakang = "Python"

gabung = depan + " " + belakang
print(gabung)

garis = "-" * 20
print(garis)
print("abc" * 3)

Output yang Dihasilkan:

text
Belajar Python
--------------------
abcabcabc

Mari kita bedah kode di atas:

  1. Baris 4 (gabung = depan + " " + belakang): interpreter membaca nilai depan, menempelkan string " " di tengah, lalu belakang, menghasilkan string baru "Belajar Python" yang disimpan ke gabung.
  2. Baris 7 (garis = "-" * 20): operator * mengulang string "-" sebanyak 20 kali; pola ini sering dipakai untuk mencetak pemisah di output terminal.
  3. 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:

python
>>> nama = "budi"
>>> nama[0] = "B"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Untuk 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:

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

kalimat = ", ".join(buah)
print(kalimat)

path_folder = "/".join(["home", "budi", "dokumen"])
print(path_folder)

Output yang Dihasilkan:

text
mangga, jeruk, pisang
home/budi/dokumen

Mari kita amati cara kerjanya:

  1. Baris 3 (", ".join(buah)): string pemisah ", " disisipkan di antara setiap elemen list buah; hasilnya satu string mangga, jeruk, pisang.
  2. 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.