Sitelet https://www.datacamp.com/id/tutorial/python-string-tutorial
Lewati ke konten utama

Tutorial String Python

Dalam tutorial ini, Anda akan mempelajari semua tentang String Python: slicing dan striding, memanipulasi dan memformatnya dengan kelas Formatter, f-string, template, dan lainnya!
Diperbarui 28 Sep 2026  · 10 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

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:

tutorial string python

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

Pengantar Python

BasicSkill Level
4 jam
7.1M learners
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
See DetailsRight Arrow
Start Course

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:

tutorial string python

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(): mengembalikan True jika 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(): mengembalikan True jika string hanya berisi digit dan False jika 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 ketiga max, yang mengganti paling banyak max kemunculan 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...

Topik
Python
Data Science

Kursus Python di DataCamp

Kursus

Tipe Data di Python

4 jam
88.5K
Perkuat dan perluas pemahaman Anda tentang tipe data Python seperti daftar, kamus, dan tuple, dan manfaatkan mereka untuk memecahkan masalah Data Science.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya