Dasar

String di Python: metode split, replace, strip, join, slice dan f-string

Diperbarui: · Skillaria.Top

String di Python (tipe str) adalah urutan karakter Unicode yang tidak bisa diubah. Metode split() memecah string menjadi list, join() menggabungkannya kembali, replace() mengganti potongan teks, dan strip() membuang spasi di ujung; setiap metode mengembalikan string baru. Untuk menyisipkan nilai, f-string paling praktis: f"{name}: {price:.2f}".

String ada di hampir setiap program Python: input pengguna, nama berkas, baris CSV, jawaban API. Tipe str menyimpan teks dalam Unicode, sehingga huruf Cyrillic dan emoji bisa dipakai tanpa pengaturan tambahan. Metode yang paling sering dipakai adalah split, replace, strip dan join, dan untuk menampilkan nilai, f-string paling nyaman. Semuanya dibahas dengan contoh berikut.

Bagaimana string bekerja di Python

String ditulis dengan tanda kutip tunggal atau ganda — tidak ada perbedaan: 'kopi' dan "kopi" sama saja. Tanda kutip tiga membuat string multibaris, dengan pindah baris yang tersimpan apa adanya.

name = "Kopi"
note = """Baris pertama
Baris kedua"""
print(len(name))  # 4 — panjang string dalam karakter

Sifat utama string adalah tidak bisa diubah. Metode tidak mengubah string, melainkan mengembalikan string baru. Karena itu, s.replace("a", "b") tanpa penugasan tidak menghasilkan apa-apa — harus ditulis s = s.replace("a", "b"). Ini kesalahan paling sering dilakukan pemula.

Karakter khusus, pindah baris, dan raw string

Pindah baris ditulis \n, tab \t, dan garis miring terbalik \\. Awalan r membuat string «mentah»: garis miring terbalik di dalamnya tidak diproses. Ini berguna untuk path Windows dan ekspresi reguler.

print("Total:\n350 Rp")
path = r"C:\new\table.csv"   # \n dan \t tidak berubah menjadi karakter khusus

Ekspresi panjang bisa dipecah ke baris berikutnya dengan membungkusnya dalam tanda kurung: literal string yang berdampingan di dalam kurung akan digabung otomatis oleh Python.

split: memecah string menjadi list

Metode split() membagi string menurut pemisah dan mengembalikan list. Tanpa argumen, ia memotong pada karakter spasi apa pun dan mengabaikan spasi yang berulang — cocok untuk mengurai perintah.

"add  Kopi 250".split()        # ['add', 'Kopi', '250']
"2026-10-16".split("-")        # ['2026', '10', '16']
"a,b,,c".split(",")            # ['a', 'b', '', 'c']
"key=value=x".split("=", 1)    # ['key', 'value=x']

Perhatikan perbedaannya: dengan pemisah eksplisit, potongan kosong tetap disimpan. Argumen kedua maxsplit membatasi jumlah pemotongan, dan rsplit() memotong dari kanan. Untuk memecah teks menjadi baris, gunakan splitlines(): ia mengenali \n maupun \r\n dan tidak meninggalkan elemen kosong di akhir.

text = "kopi\ntaksi\n"
text.split("\n")     # ['kopi', 'taksi', '']
text.splitlines()    # ['kopi', 'taksi']

join: menggabungkan list menjadi string

join() adalah kebalikannya. Metode ini dipanggil pada string pemisah, dan argumennya adalah list string:

items = ["kopi", "taksi", "makan siang"]
print(", ".join(items))   # kopi, taksi, makan siang
print("\n".join(items))   # setiap item di baris baru

Semua elemen harus berupa string, kalau tidak Anda akan mendapat TypeError: sequence item 0: expected str instance, int found. Ubah angka lebih dulu: ", ".join(str(x) for x in amounts).

Penyambungan dan penggabungan string

Dua string bisa disambung dengan +, dan diulang dengan *: "-" * 20. Namun menyambung ratusan potongan dalam perulangan dengan += itu lambat, karena setiap kali tercipta string baru. Kumpulkan potongan ke dalam list lalu gabungkan dengan satu join(). Angka tidak bisa langsung disambung dengan string: "Total: " + 5 menghasilkan TypeError, gunakan str() atau f-string.

replace: mengganti potongan string

replace(old, new) mengganti semua kemunculan potongan teks. Argumen ketiga membatasi jumlah penggantian.

price = "1 250,50"
price = price.replace(" ", "").replace(",", ".")
print(float(price))                  # 1250.5

"a-b-c".replace("-", "+", 1)         # 'a+b-c'

Metode ini sensitif terhadap huruf besar-kecil dan mencari kecocokan persis. Untuk penggantian berdasarkan pola (misalnya «semua angka») diperlukan modul re dan fungsi re.sub().

strip, lstrip, rstrip: memangkas string

strip() membuang spasi, tab dan pindah baris di kedua ujung. lstrip() hanya membersihkan kiri, rstrip() hanya kanan. Ini biasanya langkah pertama untuk input pengguna dan baris dari berkas.

raw = "  Kopi \n"
raw.strip()       # 'Kopi'
raw.rstrip()      # '  Kopi'
"xxKopixx".strip("x")   # 'Kopi'

Argumennya adalah kumpulan karakter, bukan substring: "abcTekscba".strip("abc") akan membuang semua a, b dan c di ujung dalam urutan apa pun. Untuk memotong awalan atau akhiran secara tepat, gunakan removeprefix() dan removesuffix() (sejak Python 3.9).

Metode string lain yang berguna

MetodeFungsiContoh → hasil
lower(), upper()huruf kecil dan besar"Kopi".lower() → 'kopi'
startswith(), endswith()cek awal dan akhir"a.csv".endswith(".csv") → True
find()posisi substring atau -1"kopi".find("p") → 2
count()jumlah kemunculan"banana".count("a") → 3
isdigit()hanya angka?"250".isdigit() → True
zfill()melengkapi dengan nol"7".zfill(3) → '007'

Untuk mengecek apakah string memuat substring, cara paling mudah adalah operator in: if "kopi" in text.lower():. Perbandingan string dengan == dilakukan karakter demi karakter dan peka huruf besar-kecil; untuk perbandingan tanpa memperhatikan huruf, ubah keduanya dengan casefold().

Slice string

String adalah urutan, jadi karakternya bisa diakses lewat indeks mulai dari nol, dan indeks negatif menghitung dari belakang. Slice s[start:stop:step] mengembalikan potongan string; batas kanan tidak ikut.

s = "Python"
s[0]      # 'P'
s[-1]     # 'n'
s[0:3]    # 'Pyt'
s[2:]     # 'thon'
s[::2]    # 'Pto'
s[::-1]   # 'nohtyP' — membalik string

Slice tidak pernah menimbulkan error ketika melewati batas: s[0:100] mengembalikan seluruh string. Tetapi s[100] menghasilkan IndexError. Karakter pada indeks tertentu tidak bisa diubah (s[0] = "J" menghasilkan TypeError), jadi buat string baru: "J" + s[1:].

f-string di Python

Huruf f di depan string berarti ekspresi di dalam kurung kurawal akan dihitung dan disisipkan ke dalam teks. Ini cara utama memformat string sejak Python 3.6: lebih ringkas daripada format() dan lebih cepat daripada operator % yang lama.

item = "Kopi"
price = 250
print(f"{item}: {price} Rp")               # Kopi: 250 Rp
print(f"Dengan diskon: {price * 0.9} Rp")  # Dengan diskon: 225.0 Rp
print(f"{item=}")                           # item='Kopi' — praktis untuk debugging

Format angka dan perataan

Setelah titik dua di dalam kurung, ditulis spesifikasi format. Ia mengatur pembulatan, pemisah ribuan, lebar, dan perataan:

PenulisanHasilArti
f"{3.14159:.2f}"3.14dibulatkan 2 desimal
f"{1250000:,}"1,250,000pemisah ribuan
f"{1250000:_}"1_250_000garis bawah sebagai pemisah
f"{0.256:.1%}"25.6%persentase
f"{'kopi':<10}|"kopi |rata kiri, lebar 10
f"{250:>8}" 250rata kanan
f"{7:03d}"007diisi nol di depan

Perataan berguna untuk tabel di terminal: f"{name:<12}{amount:>10.2f}" membuat kolom rapi. Perlu diingat, format hanya dipakai saat menampilkan. Simpan uang dalam satuan terkecil (int) atau dalam Decimal, bukan float: 0.1 + 0.2 menghasilkan 0.30000000000000004.

Tanda kutip dan pindah baris di dalam f-string

Sejak Python 3.12 (PEP 701) f-string punya tata bahasa formal: di dalam kurung kurawal boleh memakai tanda kutip yang sama dengan luarnya, garis miring terbalik, dan pindah baris, serta kedalaman bersarang tidak lagi dibatasi. Error di dalam kurung juga menunjukkan posisi yang tepat. Di versi lama, gunakan jenis tanda kutip yang berbeda di dalam: f"{d['key']}", dan pindah baris lewat variabel terpisah atau chr(10).

Untuk teks multibaris cocok f-string dengan tanda kutip tiga: f"""Total: {total}\nJumlah posisi: {count}""".

format() dan %: cara lama

Di kode lama Anda akan menemui "{}: {}".format(item, price) dan "%s: %d" % (item, price). Spesifikasi di format() sama dengan di f-string. Metode format() masih berguna ketika templat disimpan terpisah dari data, misalnya di berkas konfigurasi.

Mengurai string: contoh praktis

Mari gabungkan metode-metode tadi. Misalkan dari berkas datang baris seperti " 2026-10-16; Kopi ; 250,50 \n", dan kita ingin mendapatkan tanggal, nama, serta jumlah dalam sen. Urutannya lazim: bersihkan ujungnya, potong menurut pemisah, bersihkan setiap bagian, lalu ubah tipenya.

line = "  2026-10-16; Kopi ; 250,50 \n"

date, item, raw_amount = [p.strip() for p in line.strip().split(";")]
amount_kop = round(float(raw_amount.replace(",", ".")) * 100)

print(date, item, amount_kop)            # 2026-10-16 Kopi 25050
print(f"{item:<10}{amount_kop / 100:>10.2f}")

Jika bagiannya bukan tiga, pembongkaran akan gagal dengan ValueError: not enough values to unpack atau too many values to unpack. Dalam kode nyata, baris seperti ini sebaiknya diperiksa lebih dulu atau error-nya ditangkap. Untuk berkas CSV sungguhan dengan tanda kutip dan karakter escape, lebih baik gunakan modul standar csv daripada split.

Kesalahan umum dengan string

  • Hasil metode tidak disimpan: s.strip() tanpa penugasan tidak mengubah apa pun.
  • join pada list angka — TypeError; ubah dulu dengan map(str, ...).
  • strip dengan substring: argumennya adalah kumpulan karakter; untuk awalan gunakan removeprefix().
  • Perbandingan peka huruf besar-kecil: "Kopi" == "kopi" bernilai False.
  • Garis miring di path Windows tanpa awalan r berubah menjadi karakter khusus.

t-string: templat alih-alih teks jadi

Python 3.14 memperkenalkan t-string. Penulisannya mirip f-string, hanya dengan awalan t, tetapi hasilnya berbeda: bukan string jadi, melainkan objek string.templatelib.Template. Di dalamnya, potongan teks (.strings) dan nilai yang disisipkan (.values) disimpan terpisah.

name = "<script>"
tpl = t"Halo, {name}!"
print(tpl.strings)   # ('Halo, ', '!')
print(tpl.values)    # ('<script>',)

Manfaatnya: pustaka menerima nilai sebelum digabung, lalu dapat memprosesnya — misalnya meng-escape tanda kurung sudut untuk HTML atau mengirim parameter dengan benar ke query SQL. F-string tidak memberi kesempatan itu, karena semuanya sudah langsung digabung. Untuk keluaran biasa tetap gunakan f-string.

Ringkasan

Untuk pekerjaan sehari-hari dengan string, Python cukup dengan sedikit metode: split() dan join() untuk mengurai dan menyusun teks, strip() untuk membersihkan input, replace() untuk mengganti potongan, slice untuk memotong, dan f-string untuk menampilkan nilai dengan format yang diinginkan. Ingat sifat tidak bisa diubah: metode mengembalikan string baru, dan hasilnya harus disimpan. String, angka, dan f-string dipraktikkan dengan contoh pencatat pengeluaran dalam pelajaran tentang string di kursus Python.

Pertanyaan umum

Bagaimana cara mengetahui panjang string di Python?

Fungsi len(s) mengembalikan jumlah karakter. Untuk huruf Cyrillic dan emoji yang dihitung adalah karakter Unicode, bukan byte; ukuran dalam byte didapat dengan len(s.encode("utf-8")).

Bagaimana mengubah angka menjadi string dan sebaliknya?

str(250) menghasilkan '250', sedangkan int("250") dan float("2.5") melakukan kebalikannya. Jika string bukan angka, int() akan menimbulkan ValueError, jadi input sebaiknya diperiksa.

Mengapa replace tidak mengubah string saya?

String tidak bisa diubah, dan replace mengembalikan string baru. Simpan hasilnya: s = s.replace("a", "b").

Bagaimana mengecek apakah string kosong?

String kosong dianggap salah, jadi cukup if not s:. Jika string bisa berisi spasi saja, cek dengan if not s.strip():.

Apa bedanya t-string dan f-string?

f-string langsung menghasilkan str jadi, sedangkan t-string (Python 3.14+) adalah objek Template yang menyimpan potongan teks dan nilai secara terpisah. Ini memungkinkan data di-escape dengan aman untuk HTML dan SQL.

Pelajari topik ini lewat video

Topik ini dibahas mendalam dengan praktik di kursus “Python 3.15: от новичка до профи”.

Ke kursus