String adalah kumpulan alfabet, kata, atau karakter lainnya. Ini adalah salah satu struktur data primitif dan merupakan blok bangunan untuk manipulasi data. Python memiliki kelas string bawaan bernama str. String Python bersifat "immutable" yang berarti tidak dapat diubah setelah dibuat. Untuk manipulasi string, kita membuat string baru saat berjalan untuk merepresentasikan nilai yang dihitung karena sifatnya yang tidak dapat diubah.
Dalam tutorial ini, Anda akan melihat string secara mendalam dan akan membahas topik-topik berikut:
- Pertama Anda akan melihat apa itu String Python dan bagaimana cara merepresentasikannya.
- Selanjutnya, Anda akan masuk ke String Slicing di mana Anda akan diperkenalkan pada konsep penting slicing dan striding dalam Python.
- Anda juga akan melihat beberapa operasi string umum secara langsung.
- Terakhir, Anda akan melihat berbagai cara untuk memformat string. Anda akan melihat:
- Pemformatan %
- Kelas
Formatter - Template
- F-string, yang merupakan tambahan terbaru dalam keluarga format string mulai Python Versi 3.6

Jika Anda tertarik mempelajari lebih lanjut tentang struktur data di Python, pastikan untuk melihat dua bagian kursus DataCamp Python Data Science Toolbox. Kursus ini membahas lebih dalam tentang fungsi, iterator, list, dan lain-lain.
String
Anda dapat menangani data tekstual di Python menggunakan objek str. String adalah urutan unicode yang immutable. Unicode adalah sistem yang dirancang untuk merepresentasikan semua karakter dari berbagai bahasa. Dalam unicode, setiap huruf atau karakter direpresentasikan sebagai angka 4-byte. Setiap angka merepresentasikan satu karakter unik.
Untuk merepresentasikan string, Anda menuliskannya di dalam tanda kutip. Ada beberapa cara untuk melakukannya:
- Tanda kutip tunggal, seperti pada contoh ini: 'Single quote allow you to embed "double" quotes in your string.'
- Tanda kutip ganda. Misalnya: "Double quote allow you to embed 'single' quotes in your string."
- Tanda kutip tiga, seperti pada contoh ini: """Triple quotes using double quotes""", '''Triple quotes using single quotes.'''
String dengan tanda kutip tiga memungkinkan Anda bekerja dengan string multi-baris, dan semua spasi kosong yang terkait akan disertakan dalam string.
single_quote = 'Single quote allow you to embed "double" quotes in your string.'
double_quote = "Double quote allow you to embed 'single' quotes in your string."
triple_quote = """Triple quotes allows to embed "double quotes" as well as 'single quotes' in your string.
And can also span across multiple lines."""
String bersifat immutable yang berarti jika Anda mencoba mengubah nilai apa pun dalam string, akan muncul error. Anda harus membuat string baru untuk memasukkan perubahan.
triple_quote = '''This is triple quoted string using "single" quotes.'''
triple_quote[35] = "'"
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-207-62d335428dcf> in <module>()
1 triple_quote = '''This is triple quoted string using "single" quotes.'''
----> 2 triple_quote[35] = "'"
TypeError: 'str' object does not support item assignment
triple_quote_new = triple_quote[0:35] + "'single'" + triple_quote[43:]
print(triple_quote_new)
This is triple quoted string using 'single' quotes.
Anda dapat mengetahui panjang string menggunakan fungsi bawaan len():
len(triple_quote_new)
51
Mulai Belajar Python Secara Gratis
Python Tingkat Menengah
String Slicing di Python
Karena string adalah urutan karakter, Anda dapat mengaksesnya melalui slicing dan indexing seperti halnya pada list atau tuple Python. String diindeks berdasarkan setiap karakter dalam string dan pengindeksan dimulai dari 0:

Pada string di atas, indeks pertama adalah C dan diindeks 0. Karakter terakhir adalah titik . yang merupakan karakter ke-16 dalam string. Anda juga dapat mengakses karakter dari arah sebaliknya mulai dari -1, yang berarti Anda juga dapat menggunakan -1 sebagai nilai indeks untuk mengakses . dalam string. Ada juga spasi di antara Chocolate dan cookie, ini juga merupakan bagian dari string dan memiliki indeks sendiri, yaitu ke-9 dalam kasus ini. Anda dapat memeriksanya menggunakan slicing.
Karena setiap karakter dalam string Python memiliki nomor indeks yang sesuai, Anda dapat mengakses dan memanipulasi string dengan cara yang sama seperti tipe data berurutan lainnya. Slicing adalah teknik dalam Python yang memungkinkan Anda mengambil elemen tertentu atau subkumpulan elemen dari sebuah objek kontainer menggunakan nilai indeksnya. Slicing menyelamatkan Anda dari keharusan menulis pernyataan loop untuk melewati indeks string Anda guna menemukan atau mengakses substring tertentu.
snack = "Chocolate cookie."
print(snack[0])
print(snack[9])
print(snack[-1])
C
.
Misalkan Anda ingin mengekstrak substring 'cookie' dari string di bawah ini. Bagaimana Anda melakukannya?
Dalam kasus seperti itu, Anda menggunakan range slicing.
Sintaks untuk range slicing adalah sebagai berikut: [Indeks mulai (inklusif): Indeks berhenti (eksklusif)]
snack = "Chocolate cookie."
print(snack[10:16])
cookie
Anda juga bisa melakukannya menggunakan nilai negatif untuk indeks berhenti:
print(snack[10:-1]) # -1: karena indeks berhenti dikecualikan dalam slicing.
cookie
Melakukan slicing tanpa menentukan indeks berhenti berarti Anda mengambil karakter dari indeks mulai hingga indeks terakhir dalam kalimat. Demikian pula, slicing tanpa indeks mulai berarti Anda mulai dari indeks pertama dalam string hingga indeks berhenti:
# Nilai berhenti tidak diberikan
print(snack[0:])
# Nilai mulai tidak diberikan (nilai berhenti dikecualikan sesuai sintaks)
print(snack[:-1])
# Ini juga diperbolehkan
print(snack[:])
Chocolate cookie.
Chocolate cookie
Chocolate cookie.
Slicing string juga dapat menerima parameter ketiga, yaitu stride, yang mengacu pada berapa banyak karakter yang ingin Anda maju setelah karakter pertama diambil dari string. Nilai stride disetel ke 1 secara default.
Mari kita lihat stride dalam aksi untuk memahaminya lebih baik:
number_string = "1020304050"
print(number_string[0:-1:2])
12345
Tip: Hal keren yang bisa Anda lakukan dengan striding adalah membalik string:
print(number_string[::-1]) #
0504030201
Nilai -1 untuk stride memungkinkan Anda mulai dari karakter terakhir lalu bergerak satu karakter setiap langkah.
Atau, jika Anda memberikan nilai -2, Anda mulai dari karakter terakhir dan bergerak dua karakter setiap langkah:
print(number_string[::-2]) #
00000
Operasi String Umum
Slicing dan range slicing adalah operasi umum yang sering Anda perlukan pada string. Ada juga penggabungan string (concatenation), yang sesederhana penjumlahan:
string1 = 'Chocolate'
string2 = 'cookie'
snack = string1 + " " + string2
print(snack)
Chocolate cookie
Namun, ini tidak akan berhasil jika Anda mencoba menggabungkan string dengan tipe data lain.
cost = 15
string1 = "The total in Euro is: "
bill = string1 + cost
print(bill)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-218-7d5c5248b927> in <module>()
2 string1 = "The total in Euro is: "
3
----> 4 bill = string1 + cost
5 print(bill)
TypeError: Can't convert 'int' object to str implicitly
Di sini, Anda mencoba menggabungkan string dengan nilai integer yang tidak diperbolehkan. Interpretor tidak dapat secara implisit memahami apakah Anda mencoba melakukan penjumlahan integer sederhana atau penggabungan string. Namun, coba ini sekarang:
bill = string1 + str(cost)
print(bill)
The total in Euro is: 15
Ini karena Anda secara eksplisit mengonversi integer menjadi nilai string lalu melakukan penggabungan. Untuk mempelajari lebih lanjut tentang konversi tipe data, lihat tutorial ini.
Untuk mengulang string, gunakan operasi *.
single_word = 'hip '
line1 = single_word * 2 + 'hurray! '
print(line1 * 3)
hip hip hurray! hip hip hurray! hip hip hurray!
Anda juga dapat memeriksa keanggotaan substring dalam string menggunakan in dan not in:
sub_string1 = 'ice'
sub_string2 = 'glue'
string1 = 'ice cream'
if sub_string in string1:
print("There is " + sub_string + " in " + string1)
if sub_string2 not in string1:
print("Phew! No " + sub_string2 + " in " + string1)
There is ice in ice cream
Phew! No glue in ice cream
Python menyediakan banyak metode bawaan atau fungsi pembantu untuk memanipulasi string. Mengganti substring, mengkapitalisasi kata-kata tertentu dalam paragraf, mencari posisi string di dalam string lain adalah beberapa operasi yang dapat Anda lakukan dengan metode bawaan ini.
Lihat beberapa di antaranya secara detail:
str.capitalize(): mengembalikan salinan string dengan karakter pertamanya dikapitalisasi.
str.capitalize('cookie')
'Cookie'
str.islower(): mengembalikan true jika semua karakter dalam string adalah huruf kecil, false jika tidak.
snack = 'cookie'
snack.islower()
True
str.find(substring): mengembalikan indeks terendah dalam string tempat substring ditemukan. Anda juga dapat menentukan indeks mulai dan berhenti dalam string tempat Anda ingin substring dicari. Mengembalikan -1 jika substring tidak ditemukan.
str1 = 'I got you a cookie'
str2 = 'cook'
str1.find(str2)
12
str.count(substring): menghitung berapa kali substring muncul dalam string. Anda juga dapat menentukan indeks mulai dan berhenti untuk string.
str1 = 'I got you a cookie, do you like cookies?'
str2 = 'cookie'
str1.count(str2)
2
str.isspace(): mengembalikanTruejika hanya ada karakter whitespace dalam string, false jika tidak. Karakter whitespace adalah karakter seperti spasi, tab, baris baru, dan sebagainya.
Ini bisa berguna saat bekerja dengan dataset dunia nyata, yang mungkin tidak selalu menyandikan spasi dengan benar selama konversi dari satu format ke format lain.
str_space = ' '
str_space.isspace()
True
str_tab = '\t'
str_tab.isspace()
True
str_nextline = '''\n'''
str_nextline.isspace()
True
Catatan: Apakah Anda memperhatikan \t, \n di atas? Ini disebut escape character. Mereka dimulai dengan \ (backslash). Secara internal, karakter ini tidak ditafsirkan sebagai string normal, melainkan sebagai karakter khusus yang merepresentasikan sesuatu yang lain. Misalnya - \t merepresentasikan tab. Masih banyak escape character lainnya dan Anda dapat membacanya lebih lanjut di tutorial Regex Python kami.
str.lstrip(): menghapus semua whitespace di bagian awal string. Ini adalah fungsi lain yang dapat berguna saat Anda bekerja dengan dataset dunia nyata.
str1 = " I can't hear you. Are you alright? "
str2 = " Yes, all is good."
str3 = str1.lstrip() + str2.lstrip()
print(str3)
I can't hear you. Are you alright? Yes, all is good.
str.isdigit(): mengembalikanTruejika string hanya berisi digit danFalsejika tidak.
number_string = "1020304050"
number_string.isdigit()
True
str.replace(substring, new): mengganti semua kemunculan substring dalam string dengan nilai baru. Anda juga dapat menentukan argumen ketigamax, yang mengganti paling banyakmaxkemunculan substring dalam string. Ingat bahwa ini bukan penggantian secara in-place, yang berarti sifat immutable tetap berlaku dan string baru sebenarnya dibentuk.
string1 = 'hip hip hurray! hip hip hurray! hip hip hurray!'
string2 = string1.replace('hip', 'Hip')
print(string1)
print(string2)
hip hip hurray! hip hip hurray! hip hip hurray!
Hip Hip hurray! Hip Hip hurray! Hip Hip hurray!
string1.replace('hip', 'Hip', 2)
'Hip Hip hurray! hip hip hurray! hip hip hurray!'
str.split(delimiter=""): membagi string sesuai delimiter (spasi jika tidak diberikan) dan mengembalikan list substring.
dessert = 'Cake, Cookie, Icecream'
list_dessert = string1.split(',')
Anda dapat menemukan daftar lengkap metode string di Python di sini.
Pemformatan String
Python mendukung beberapa cara untuk memformat string. Di bagian ini, Anda akan mempelajari lebih lanjut tentang pemformatan string!
% Pemformatan
Modulo % adalah operasi bawaan di Python. Ini dikenal sebagai interpolation operator. Anda perlu menyediakan % diikuti oleh tipe data yang perlu diformat atau dikonversi. Operasi % kemudian menggantikan frasa '%datatype' dengan nol atau lebih elemen dari tipe data yang ditentukan:
print("I bought %d Euro worth of %s!" %(200, 'cookies'))
I bought 200 Euro worth of cookies!
Anda telah melihat %d digunakan untuk integer dan %s untuk string. Beberapa tipe konversi lain yang tersedia adalah: o untuk nilai oktal, x untuk heksadesimal, f untuk format desimal bertipe float, c untuk satu karakter (menerima integer atau string satu karakter).
Kelas formatter
Kelas formatter adalah salah satu kelas string bawaan. Kelas ini menyediakan kemampuan untuk melakukan substitusi variabel yang kompleks dan pemformatan nilai menggunakan metode format(). Kelas ini memungkinkan Anda membuat dan menyesuaikan perilaku pemformatan string Anda sendiri dengan menulis ulang metode publik yang dikandungnya: format(), vformat(). Kelas ini memiliki beberapa metode yang dimaksudkan untuk diganti oleh subclass: parse(), get_field(), get_value(), check_unused_args(), format_field() dan convert_field(). Namun, demi kesederhanaan, Anda hanya akan melihat fungsi format() yang paling umum digunakan dalam aksi...
print("I bought {0} Euro worth of {1}!".format(200,'cookies')) #Mengakses nilai berdasarkan posisi
I bought 200 Euro worth of cookies!
print("I bought {total} Euro worth of {item}!".format(total = 200, item = 'cookies')) #Mengakses nilai berdasarkan nama
I bought 200 Euro worth of cookies!
'{:#<10}'.format('Cake') #Perataan kiri untuk kata 'Cake' menurut perataan kanan, celah diisi dengan '#'
'Cake######'
'{:#^10}'.format('Cake') #Perataan tengah untuk kata 'Cake' menurut perataan kanan, celah diisi dengan '#'
'###Cake###'
'{:#>10}'.format('Cake') #Perataan kanan untuk kata 'Cake' menurut perataan kanan, celah diisi dengan '#'
'######Cake'
for num in range(1,10):
print('{0:{width}}'.format(num, width=5), end=' ')
1 2 3 4 5 6 7 8 9
Template String
Alih-alih substitusi berbasis % yang normal, template mendukung substitusi berbasis $. Alasan diperkenalkannya template di Python Versi 2.4 adalah meskipun pemformatan string % kuat dan kaya, namun rawan error dan juga cukup ketat dalam hal format yang mengikuti '%', sehingga menjadi kompleks. Kesalahan umum dengan pemformatan % adalah lupa karakter format di akhir, misalnya: huruf e dalam %(variabl)e.
Template memiliki beberapa metode yang didefinisikan di dalamnya: substitute() dan safe_substitute(). Berikut cara menggunakannya:
from string import Template #First you will need to import 'Tempalte' class
money = dict(who = 'You', to_whom = 'baker')
Template('$who owe the $to_whom a total of $$100').substitute(money)
'You owe the baker a total of $100'
Perhatikan $$ pada contoh di atas?
Ini karena pada template, $$ adalah escape character yang diganti dengan satu $. Ini adalah salah satu aturan untuk template. Aturan lain untuk template adalah cara Anda mendefinisikan identifier di dalam template, ada sintaks biasa: $identifier, namun Anda juga memiliki ${identifier}.
Artinya ${identifier} sama dengan $identifier, tetapi dapat digunakan untuk skenario seperti:
word = dict(noun = 'feed')
Template('Please don\'t stop ${noun}ing me').substitute(word)
"Please don't stop feeding me"
Mari lihat cara menggunakan substitute() dan safe_substitute().
fact = Template('$alter_ego is weak but wait till he transforms to $superhero!')
fact.substitute(alter_ego='Bruce Banner', superhero='Hulk')
'Bruce Banner is weak but wait till he transforms to Hulk!'
hero = dict(alter_ego='Peter Parker')
fact.substitute(hero)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-244-c82f6a2ebc02> in <module>()
1 hero = dict(alter_ego='Peter Parker')
----> 2 fact.substitute(hero)
~/anaconda3/envs/tensorflow/lib/python3.5/string.py in substitute(*args, **kws)
127 raise ValueError('Unrecognized named group in pattern',
128 self.pattern)
--> 129 return self.pattern.sub(convert, self.template)
130
131 def safe_substitute(*args, **kws):
~/anaconda3/envs/tensorflow/lib/python3.5/string.py in convert(mo)
117 named = mo.group('named') or mo.group('braced')
118 if named is not None:
--> 119 val = mapping[named]
120 # We use this idiom instead of str() because the latter will
121 # fail if val is a Unicode containing non-ASCII characters.
KeyError: 'superhero'
Contoh di atas menimbulkan error, karena superhero tidak didefinisikan. Namun, coba ini...
fact.safe_substitute(hero)
'Peter Parker is weak but wait till he transforms to $superhero!'
safe_substitute() adalah salah satu keunggulan menggunakan template.
Mengapa ada begitu banyak opsi pemformatan string, Anda bertanya?
Yah, ini terutama soal preferensi sintaks. Biasanya ini bermuara pada pertukaran antara kesederhanaan vs verbositas dan juga bergantung pada familiaritas Anda dengan sintaks yang ada. Misalnya, menggunakan % untuk pemformatan string akan terasa natural bagi orang dengan latar belakang pemrograman C. Template di Python mudah ditulis, sedangkan menggunakan format() bisa lebih verbose tetapi memiliki lebih banyak fitur.
Formatted String Literal (f-string)
Ini adalah metode pemformatan string lain yang ditambahkan di Python Versi 3.6. Formatted string literal atau f-string adalah string literal yang diawali dengan 'f' atau 'F'. Anda dapat mendefinisikan identifier yang akan digunakan dalam string Anda di dalam kurung kurawal { }.
Mengapa ada lagi opsi pemformatan string? Kepraktisan dan kesederhanaan itu indah, itulah alasannya!
Lihat contoh di bawah untuk melihat mengapa f-string benar-benar cara yang paling sederhana dan praktis untuk memformat string di Python.
alter_ego = 'Peter Parker'
superhero = 'spiderman'
f'{alter_ego} is weak but wait till he transforms to {superhero}!'
Catatan: Kode di atas hanya akan berfungsi dengan Python Versi 3.6 ke atas. Untuk memeriksa versi Python yang terpasang, ketik: python -V di terminal. Atau Anda juga dapat menggunakan modul sys di Python. Untuk menggunakannya, lakukan hal berikut:
import sys
sys.version
Formatted string sebenarnya adalah ekspresi yang dievaluasi saat run time, yang berarti Anda dapat menggunakan ekspresi Python apa pun di dalam kurung kurawal f-string, yang merupakan keuntungan lain dari penggunaan f-string.
f'{alter_ego} is weak but wait till he transforms to {superhero.capitalize()}!'
F-string sudah hebat, bukan! Tapi tunggu, ini menjadi semakin baik.. f-string juga lebih cepat dibandingkan tiga metode lain yang telah Anda lihat sebelumnya. Ini karena f-string diurai terlebih dahulu dan disimpan dalam bytecode yang efisien untuk eksekusi yang lebih cepat.
Tarik senar yang tepat!
Anda telah sampai di akhir tutorial, selamat! Anda telah melihat apa itu string, mempelajari tentang string slicing dan melihat beberapa operasi yang dapat dilakukan pada string. Anda juga telah melihat sejumlah cara untuk memformat string. Namun ingat, kunci menguasai teknik apa pun adalah latihan!
String adalah salah satu dari beberapa tipe data di Python. Lihat kursus DataCamp Data Types for Data Science untuk mempelajari lebih lanjut tentang list, dictionary, tuple, dan set. Dalam kursus ini Anda dapat memanfaatkan pengetahuan tipe data Anda. Anda akan bekerja dengan data transit dari wilayah metropolitan Chicago untuk tujuan data science. Langsung lihat sendiri...
