Estimasi Waktu Baca: 6 menit

String adalah tipe data yang mewakili teks. Teks sendiri merupakan serangkaian karakter yang dapat berupa huruf, angka, dan simbol. Untuk membuat tipe data teks atau string maka karakter-karakter tersebut haruslah berada di antara tanda kutip. Baik kutip tunggal atau kutip ganda, keduanya memiliki kedudukan yang sama di python.

>>> # String dengan kutip tunggal
... 'Budi'
'Budi'
>>> type('Budi')
<class 'str'>

>>> # String dengan kutip ganda 
... "Budi"
'Budi'
>>> type("Budi")
<class 'str'>

Selain huruf, angka dan simbol juga bisa bertipe string, selama mereka berada di dalam tanda kutip.

>>> # Angka sebagai String 
... angka = "1234567890"
>>> angka
'1234567890'
>>> type(angka)
<class 'str'>

>>> # Simbol sebagai String ... simbol = "`!?@#$%^&*()-_=+{}[]|\/,.;:'" >>> simbol "`!?@#$%^&*()-_=+{}[]|\\/,.;:" >>> type(simbol) <class 'str'>

Bang kalau misal simbol atau tanda bisa menjadi string, lantas bagaimana kita menampilkan tanda kutip itu sendiri di string?

Pertanyaan yang bagus, ada beberapa cara untuk menampilkan tanda kutip di string. Cara pertama menggunakan tanda kutip yang berbeda. Contohnya seperti ini.

>>> print("Aku dipanggil 'Budi Ganteng'")
Aku dipanggil 'Budi Ganteng'

Kedua dengan menggunakan tanda backslash (\) diikuti dengan tanda kutip (\”)

>>> print("Aku dipanggil \"Budi Ganteng\"")
Aku dipanggil "Budi Ganteng"

Ketiga dengan menggunakan tiga pasang tanda kutip.

>>> print("""Aku dipanggil "Budi Ganteng" """)
Aku dipanggil "Budi Ganteng"

Cara ketiga ini juga akan dibahas selebihnya pada materi di bawah ini.

String Dengan Baris Lebih Dari Satu

Ketika ada string atau teks dengan baris lebih dari satu, maka string punya aturan sendiri dalam penulisannya. Kita tidak bisa menggunakan sepasang tanda kutip seperti ini lagi.

paragraf = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
print(paragraf)

Karena akan menimbulkan pesan error.

kopidingin@dev:~$ python coba.py
  File "coba.py", line 1
    paragraf = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
                                                                                                                                       ^
SyntaxError: EOL while scanning string literal

Error ini disebabkan karena sepasang tanda kutip (kutip pembuka dan penutup) hanya bisa menjadikan nilai tersebut string bila berada di baris yang sama atau satu baris. Ketika kutip pembuka dan penutup berbeda baris, maka di baris pertama nilai tersebut tidak akan menjadi string begitu pula dengan baris selanjutnya, kemudian karena baris pertama sudah menyalahi sintaks maka python akan menunjuk bahwa baris pertamalah penyebab kesalahan ini.

Lalu bagaimana solusinya?

Solusinya adalah dengan menggunakan tiga pasang tanda kutip seperti ini.

paragraf = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""
print(paragraf)

Hasil keluaran

kopidingin@dev:~$ python coba.py
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

String Sebagai Tipe Data Urutan

Selain mewakili tipe data teks, string sebenarnya juga bisa dikatakan tipe data urutan (sequence). Hal ini karena setiap karakter penyusun teks dalam tipe data string sebenarnya memiliki indeksnya masing-masing yang tersusun secara berurut.

Indeks sendiri merupakan nilai berupa angka yang mewakili sebuah elemen. Sama halnya dengan tipe data urutan yang lain, indeks awal dari karakter string dimulai dari nol dan untuk mengaksesnya kita dapat menggunakan beberapa cara.

Mengakses Karakter String Dengan Cara Manual

Pertama kita dapat menggunakan cara manual, dengan menggunakan tanda kurung siku yang di dalamnya diisi dengan indeks karakter string tersebut.

>>> nama = "Budi"
>>> nama[0]
'B'
>>> nama[3]
'i'

Gunakan bilangan negatif untuk mendapatkan indeks dari urutan belakang.

>>> nama = "Budi"
>>> nama[-1]
'i'
>>> nama[-4]
'B'

Mengakses Karakter String Dengan Teknik Slicing

Caranya sama dengan cara manual yang membutuhkan kurung siku, yang membedakan adalah ketika menggunakan teknik slicing kita harus mendefinisikan indeks awal dan akhir yang keduanya dipisahkan dengan tanda titik dua seperti ini.

>>> nama = "Budi Ganteng"
>>> nama[5:12]
'Ganteng'

Tanda titik dua bisa diartikan range antara indeks awal dan akhir yang dipilih. Jika indeks awal yang dipilih dimulai dari 0, bisa juga ditulis seperti ini.

>>> nama = "Budi Ganteng"
>>> nama[:12]
'Budi Ganteng'

Menggunakan Perulangan

Cara selanjutnya bisa melalui perulangan for seperti di bawah ini.

>>> nama = "Budi Ganteng"
>>> for i in nama:
...  print(i)
... 
B
u
d
i
 
G
a
n
t
e
n
g

Karena pada dasarnya setiap karakter memiliki indeks, jadi dengan menggunakan perulangan, maka karakter-karakter yang diwakili indeks tersebut akan bisa didapatkan.

Ketiga cara di atas dapat juga diterapkan pada tipe data urutan yang lain seperti list dan tuple.

Pemformatan String

Pemformatan string merupakan suatu cara untuk menampilkan nilai atau data melalui pengaturan format string.

Terdapat dua cara dalam pemformatan string. Cara pertama dengan menggunakan fungsi format(), cara ini dikenal dengan cara baru. Sedangkan untuk cara lamanya menggunakan operator format string yang diwakilkan dengan tanda persen (%).

Pemformatan String Menggunakan Fungsi format()

Nilai yang terkena fungsi format akan secara otomatis dikonversi ke dalam string, namun konversi ini tidak bersifat mutlak atau tidak merubah secara permanen tipe data dari nilai tersebut.

>>> nama = "Budi Ganteng"
>>> print("Perkenalkan nama saya {}".format(nama))
Perkenalkan nama saya Budi Ganteng

Ia dirubah atau diatur ke dalam format string ketika akan dicetak atau ditampilkan.

Pemformatan String Menggunakan Operator %

Bila cara baru menggunakan fungsi format(), maka cara lama menggunakan tanda atau operator %. Tanda % di sini bukan sebagai penghitung, namun sebagai operator penanda, makanya nanti juga akan dikenal istilah penentu format. Apa itu penentu format?

Penentu format merupakan operator gabungan dari tanda % yang diikuti dengan huruf kecil seperti s, f, d, i, dan lain-lain. Huruf-huruf kecil ini berguna sebagai penanda tipe data yang kalian sisipkan. Jadi contoh %s, s di sini menandakan bahwa data atau nilai yang kalian sisipkan merupakan String.

Bila masih bingung, coba lihat penerapannya di bawah.

>>> nama = "Budi"
>>> usia = 10
>>> tinggi = 130.5
>>> berat = 30.5
>>> "Nama saya adalah %s, saya berusia %i tahun, saya memiliki tinggi badan %f cm dan berat %f kg" % (nama, usia, tinggi, berat)

Terdapat empat penentu format dengan tiga jenis pada praktek di atas, antara lain:

  • %s untuk mewakili tipe data String (teks)
  • %i untuk mewakili tipe data integer (bilangan bulat)
  • %f untuk mewakili tipe data float (bilangan desimal)

Keempatnya mewakili setiap variabel secara berurutan (nama, usia, tinggi, berat).

Hasil keluarannya seperti berikut.

'Nama saya adalah Budi, saya berusia 10 tahun, saya memiliki tinggi badan 130.500000 cm dan berat 30.500000 kg'

Untuk penentu format float (%f) akan ditampilkan hingga 6 digit angka di belakang koma (atau titik dalam pemrograman), jika kurang dari 6 digit di belakang koma, maka sisanya akan diisi angka 0.

Karakter Escape

Sesuai namanya karakter escape, merupakan karakter yang lepas dari pencetakan (non-printable), maksudnya, karakter ini tidak akan ditampilkan berdasarkan bentuknya justru karakter ini akan berubah fungsi entah menjadi spasi, tab, baris baru, dan sebagainya. Karakter escape diwakili dengan notasi atau tanda backslash (\) dan diikuti dengan karakter lain seperti huruf atau bisa juga gabungan dari huruf dan tanda minus (-).

Beberapa karakter escape yang sering digunakan adalah \t untuk memberikan tab dan \n untuk memberikan baris baru (new line).

>>> print("\t Perkenalkan nama saya adalah Budi. \n Saya berusia 10 tahun, saya memiliki tinggi 130.5 cm dan berat 30.5 kg. \n \t Salam kenal semuanya :)")
	 Perkenalkan nama saya adalah Budi. 
 Saya berusia 10 tahun, saya memiliki tinggi 130.5 cm dan berat 30.5 kg. 
 	 Salam kenal semuanya :)

Operator Spesial Dalam String

Operator spesial dalam string merupakan operator yang dapat digunakan untuk memanipulasi, memformat, dan mengakses atau mendapatkan nilai string. Beberapa contoh diantaranya sudah sempat disinggung dalam materi di atas, seperti pada materi cara mengakses string dengan cara manual ([]) dan teknik slicing ([:]). Keduanya ini merupakan sedikit dari operator spesial. Kemudian pada materi pemformatan cara lama yang menggunakan % juga termasuk salah satunya.

Di bawah ini merupakan salah satu penerapan operator spesial string dalam hal memanipulasi nilai.

>>> nama_depan = "Budi "
>>> nama_belakang = "Ganteng"
>>> nama_depan + nama_belakang
'Budi Ganteng'
>>> nama_depan*5
'Budi Budi Budi Budi Budi '

Pada kode di atas kita menggunakan dua operator umum yaitu penjumlahan (+) dan perkalian (*). Keduanya tidak digunakan sebagai perhitungan jika dalam tipe data string python, mereka berdua lebih digunakan dalam hal memanipulasi data atau nilai. Operator penjumlahan akan menggabungkan isi dari variabel nama_depan dan nama_belakang. Sedangkan operator perkalian (*) akan membuat data dalam variabel nama_depan dicetak 5 kali.