String adalah tipe untuk teks, dan teks hadir di hampir semua program, dari pesan keluaran hingga data yang dibaca dari berkas. Topik ini membahas cara menulis string, karakter khusus melalui escape, penyisipan nilai dengan f-string, serta satu sifat mendasar yang membedakan string dari banyak tipe lain, yaitu sifatnya yang immutable. Contoh yang dipakai sengaja dibuat sederhana agar pola dasarnya terlihat jelas.
Menulis literal string#
Literal string ditulis di antara tanda kutip tunggal atau ganda. Python memperlakukan keduanya sama, sehingga pilihannya bebas. Kebebasan ini berguna dalam praktik: teks yang memuat tanda kutip tunggal cukup dibungkus kutip ganda, dan sebaliknya, tanpa perlakuan khusus apa pun.
print("Python")
print('Python')
print("Sebutan untuk teks di Python adalah string")
print('Kata "dinamis" diberi tanda kutip ganda')Python
Python
Sebutan untuk teks di Python adalah string
Kata "dinamis" diberi tanda kutip gandaBaris keempat memperlihatkan manfaat memilih kutip tunggal: tanda kutip ganda di dalam teks langsung ditulis tanpa perlakuan tambahan. Teks yang berbaris-baris dibungkus tiga tanda kutip berurutan, dan pemindah baris di dalamnya ikut tersimpan apa adanya.
pengumuman = """Jadwal piket kelas:
Senin, Ali
Selasa, Budi"""
print(pengumuman)Jadwal piket kelas:
Senin, Ali
Selasa, BudiEscape dan karakter khusus#
Tanda backslash memberi arti khusus pada karakter yang menyusulnya, dan pola ini disebut escape. Dua yang paling sering dipakai adalah \n untuk pemindah baris dan \t untuk tab. Untuk menuliskan backslash itu sendiri, tuliskan dua kali berturut-turut. Apabila teks memuat banyak backslash yang memang harus dibaca apa adanya, awali literal dengan huruf r untuk membentuk raw string.
print("baris satu\nbaris dua")
print("kolom A\tkolom B")
print("kutip: \" dan backslash: \\")
print(r"jalur C:\nama\tahun")baris satu
baris dua
kolom A kolom B
kutip: " dan backslash: \
jalur C:\nama\tahunBaris keempat menunjukkan raw string: prefiks r membuat backslash diperlakukan sebagai karakter biasa, sehingga teks seperti jalur berkas tetap utuh tanpa penggandaan backslash. Perhatikan pula bahwa \t benar-benar menghasilkan spasi tab pada baris ketiga keluaran, terlihat dari jarak yang lebih lebar di antara dua kolom.
f-string untuk menyisipkan nilai#
F-string adalah literal string yang diawali huruf f dan dapat menampung ekspresi di dalam kurung kurawal. Ekspresi dievaluasi, hasilnya diubah menjadi teks, lalu ditempel pada posisinya. Tanpa huruf f, kurung kurawal diperlakukan sebagai teks biasa tanpa penyisipan. Bentuk ini menggantikan penyambungan string dengan + yang rentan salah spasi dan sulit dibaca ketika nilainya bertambah banyak.
nama = "Citra"
skor = 87.5
print(f"{nama} memperoleh skor {skor}")
print(f"Skor dua desimal: {skor:.2f}")
print(f"Dua kali skor: {2 * skor}")Citra memperoleh skor 87.5
Skor dua desimal: 87.50
Dua kali skor: 175.0Kurung kurawal pertama memuat nama variabel, sedangkan {2 * skor} memuat ekspresi lengkap yang dihitung terlebih dahulu. Setelah titik dua, penentu format :.2f memaksa dua angka desimal sehingga 87.5 tampil sebagai 87.50. Penentu format lain tersedia untuk lebar kolom, persentase, dan penataan, dan semuanya mengikuti pola titik dua yang sama.
Indeks, panjang, dan sifat immutable#
String adalah urutan karakter, sehingga karakternya dapat ditunjuk satu per satu. Indeks dimulai dari 0, dan fungsi len() menghitung jumlah karakternya.
kata = "python"
print(kata[0])
print(len(kata))p
6String memiliki sifat mendasar yang disebut immutable, artinya isinya tidak dapat diubah setelah dibuat. Percobaan mengganti satu karakter melalui indeks memicu TypeError, sebagaimana dibuktikan contoh berikut.
kata = "python"
try:
kata[0] = "P"
except TypeError as e:
print(type(e).__name__)
print(str(e))TypeError
'str' object does not support item assignmentPerbaikannya bukan mengubah string lama, melainkan membuat string baru dari potongan yang ada, lalu mengikat ulang namanya.
kata = "python"
kata = "P" + kata[1:]
print(kata)PythonPotongan kata[1:] berarti seluruh karakter mulai indeks 1 sampai akhir. Penugasan di atas tidak menyentuh objek lama, melainkan mengikat ulang nama kata ke string baru hasil sambungan. Pola bangun-ulang inilah yang bekerja setiap kali string perlu diubah, dan sifat immutable-nya membuat string aman dipakai bersama karena isinya tidak dapat diubah oleh bagian kode lain.
Ringkasan#
- Kutip tunggal dan ganda setara, sedangkan tiga kutip berurutan membungkus teks berbaris-baris.
- Escape memberi arti khusus pada karakter dengan
\ndan\tyang paling sering dipakai, dan prefiks r menonaktifkannya. - f-string menyisipkan ekspresi melalui kurung kurawal dan mendukung penentu format seperti
:.2f. - String bersifat immutable, sehingga setiap perubahan menghasilkan string baru dan ikatan nama diarahkan ke objek barunya.
Referensi#
- An Informal Introduction to Python: Strings — Python Software Foundation — Perkenalan resmi literal string, escape, dan string tiga kutip.
- Text Sequence Type — str — Python Software Foundation — Spesifikasi tipe str, termasuk sifat immutable dan penomoran indeksnya.
- Formatted string literals — Python Software Foundation — Aturan lengkap f-string beserta penentu formatnya.