Belajar dengan membaca secara berurutan

string dan textwrap — Konstanta Karakter, Template, dan Formatting

Konstanta string.ascii_letters / digits dan substitusi $name string.Template, penghapusan indent textwrap.dedent dan wrap lebar fill dijalankan via template email pesanan.

Untuk apa string dan textwrap

string dan textwrap adalah modul helper yang melengkapi penanganan string sehari-hari. string menyediakan konstanta karakter (kumpulan huruf, digit, dan simbol) serta Template (substitusi template gaya $name); textwrap menangani formatting string multi-baris (penghapusan indent dan wrap lebar). Kamu akan menggunakannya saat f-string atau replace tidak cukup.

Kapan pakai string vs textwrap
modul stringkonstanta + Templatecek huruf / digittemplate body emailmodul textwrapdedent + fillhapus indentwrap lebaruse caseuse case
string unggul untuk kumpulan karakter dan substitusi template, sedangkan textwrap untuk merapikan tampilan string multi-baris. Keduanya modul standard library, dan karena use case-nya tidak tumpang tindih, cara termudah mengingatnya adalah berdasarkan peran.

string — Konstanta Karakter dan Substitusi Template

Modul string punya dua jenis fitur. Yang pertama adalah konstanta karakter seperti string.ascii_letters (52 huruf), string.digits (09), dan string.punctuation (simbol), yang menghemat kamu dari mendefinisikan sendiri "apa yang dianggap huruf / digit".

Yang kedua adalah string.Template — kamu menyisipkan variabel berawalan $ gaya $name di dalam string, lalu menggantinya dengan substitute(name="value"). Terlihat mirip f-string (f"{name}"), tetapi Template punya parser yang sederhana dan aman, jadi cocok ketika template itu sendiri berasal dari input pengguna (misalnya template body email).

Apa yang ditawarkan string
konstantaascii_letters / digits"huruf saja?"cek / generasiTemplatetemplate gaya $namesubstitute(name=value)penggantian
Konstanta karakter dipakai untuk memeriksa atau membuat "huruf / digit / simbol". Template adalah engine template ringan yang aman, mengganti placeholder gaya $name di string dengan nilai melalui substitute.
Konstanta / ClassIsiKegunaan
string.ascii_lowercaseabcdefghijklmnopqrstuvwxyz26 huruf kecil
string.ascii_uppercaseABCDEFGHIJKLMNOPQRSTUVWXYZ26 huruf besar
string.ascii_lettersgabungan keduanya (52 karakter)cek huruf, generasi string acak
string.digits0123456789cek digit
string.punctuation! " # $ % & ' ... dstcek simbol
string.Template(s)class template gaya $namebody email, template notifikasi

Buat template email konfirmasi pesanan dengan string.Template, lalu masukkan nama pelanggan dan nomor pesanan.

① Import modul string.

② Cetak panjang total konstanta huruf dalam format Huruf: ◯ (akan menjadi 52 — huruf besar + huruf kecil).

③ Cetak isi konstanta digit dalam format Digit: ◯◯.

④ Buat objek Template dari string template "Halo, $name! Pesanan #$order_id sudah siap.".

⑤ Cetak hasil substitusi dengan name="Budi" dan order_id=1234.

(Jika kamu menjalankannya dengan benar, penjelasan akan muncul.)

Python Editor

Jalankan kode untuk melihat output

textwrap — Menghapus Indent Triple-Quote dan Wrap Lebar

textwrap adalah modul standard library untuk merapikan tampilan string. Dua fungsi yang paling sering kamu pakai adalah textwrap.dedent (yang menghapus common leading indent dari teks yang ditulis dalam bentuk triple-quoted) dan textwrap.fill (yang wrap string panjang ke lebar tertentu).

Ketika kamu menulis string multi-baris seperti """...""" dalam kode, indent di level source ikut tertanam ke string itu sendiri. dedent hanya menghapus common leading whitespace, jadi kode kamu tetap rapi terindentasi sementara string-nya keluar bersih.

Cara kerja textwrap.dedent
string di source Halo Cuaca hari ini bagustextwrap.dedentstring bersihHaloCuaca hari ini bagus
Menghapus common leading indent yang tertanam di triple-quoted string, menjaga struktur kode tetap utuh sambil membersihkan string itu sendiri. Otomatis mendeteksi jumlah spasi awal yang dimiliki bersama oleh setiap baris dan menghapus sebanyak itu.
FungsiApa yang dilakukanMengembalikan
textwrap.dedent(text)menghapus common leading indentstring yang sudah bersih
textwrap.fill(text, width=N)wrap ke lebar N sebagai satu stringstring tunggal dengan newline
textwrap.wrap(text, width=N)split menjadi baris pada lebar Nlist of string
textwrap.shorten(text, w)jika hasilnya tidak muat lebar N, akhiri dengan [...]string yang dipotong
import textwrap

# dedent: hapus indent dari triple-quoted string
raw = """
    Halo.
    Cuaca hari ini bagus.
    """
print(textwrap.dedent(raw).strip())
# Halo.
# Cuaca hari ini bagus.

# fill: wrapping (Bahasa Inggris menampilkannya paling jelas)
long_text = "Python is a language that lets you work quickly and integrate systems."
print(textwrap.fill(long_text, width=30))
# Python is a language that
# lets you work quickly and
# integrate systems.

Kombinasikan dedent dengan strip

Triple-quoted string sering dimulai dan diakhiri dengan newline, jadi one-liner textwrap.dedent(raw).strip() (dedent + memotong whitespace di sekeliling) adalah pola umum. strip adalah method built-in string yang menghapus whitespace (termasuk newline) dari kedua ujung.

Bersihkan template pesan error yang ditulis dengan indentasi menggunakan dedent, lalu wrap kalimat Inggris dengan fill.

① Import textwrap.

② Definisikan string 2 baris yang diindentasi 4 spasi di dalam triple-quoted string (dengan baris kosong di awal dan akhir).

③ Hapus indent dan whitespace di sekeliling, lalu cetak --- setelah dedent --- sebelum hasil yang sudah diformat.

④ Wrap kalimat Inggris "Python is a language that lets you work quickly and integrate systems." ke lebar 30 karakter, dan cetak --- setelah fill --- sebelum hasilnya.

Python Editor

Jalankan kode untuk melihat output
QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Apa hasil dari string.Template("Hi $name").substitute(name="Bob")?

Soal 2Mana yang menghapus common leading indent dari teks yang ditulis dalam triple quote (dengan indentasi level source)?

Soal 3Apa yang dilakukan textwrap.fill(text, width=20)?