Terminal punya lebar; pengguna tidak. Paragraf panjang yang dicetak apa adanya akan memanjang ke kanan sampai terpotong layar. Module textwrap memotong, merapikan, dan menyedot teks dengan aturan yang sama seperti fitur word wrap pada editor teks. Dua konsumen utamanya: keluaran program CLI dan pembersihan docstring.
wrap dan fill #
Function wrap() memecah satu paragraf panjang menjadi list baris-baris yang sudah dipotong per kata:
import textwrap
teks = ("Python adalah bahasa pemrograman tingkat tinggi "
"yang menekankan keterbacaan kode.")
print(textwrap.wrap(teks, width=30))
print(textwrap.fill(teks, width=30))Output yang Dihasilkan:
['Python adalah bahasa', 'pemrograman tingkat tinggi', 'yang menekankan keterbacaan', 'kode.']
Python adalah bahasa
pemrograman tingkat tinggi
yang menekankan keterbacaan
kode.Perbedaan dua function ini tipis tetapi tegas:
wrap(teks, width=30): mengembalikan list of string — setiap elemen adalah satu baris yang panjangnya tidak melebihi 30 karakter. Kita bekerja memprosesnya lebih lanjut, misalnya menambah nomor baris.fill(teks, width=30): mengembalikan satu string yang sudah berisi karakter\ndi tiap pemenggalan —filladalah kependekan dari"\n".join(wrap(...)). Hasilnya siap langsung dicetak ke terminal.
Keduanya memotong pada batas kata, jadi tidak ada kata yang terpenggal di tengah — kecuali satu kata memang lebih panjang dari width, yang akan dibiarkan utuh.
dedent dan indent #
Docstring yang ditulis rata di dalam function secara otomatis membawa indentasi ekstra dari source code. Function dedent() menyingkirkan indentasi bersama itu:
import textwrap
def hitung_total(harga, jumlah):
"""
Hitung total harga pesanan.
Argumen:
harga: harga satuan barang
jumlah: jumlah barang yang dibeli
"""
return harga * jumlah
print(textwrap.dedent(hitung_total.__doc__).strip())Output yang Dihasilkan:
Hitung total harga pesanan.
Argumen:
harga: harga satuan barang
jumlah: jumlah barang yang dibeliFunction dedent() mengukur indentasi yang sama di semua baris non-kosong lalu menghapusnya, sehingga baris pertama "Hitung total..." dan baris " harga: ..." sama-sama rata kiri tanpa sisa spasi. Pola dedent(doc).strip() adalah resep standar saat menampilkan help text CLI: strip() membuang baris kosong di ujung atas dan bawah docstring.
Kebalikannya, function indent() menambah awalan pada setiap baris — ideal untuk mengutip atau menyorot keluaran:
import textwrap
catatan = "laporan berhasil dibuat\n2 transaksi gagal"
print(textwrap.indent(catatan, "> "))Output yang Dihasilkan:
> laporan berhasil dibuat
> 2 transaksi gagalSetiap baris mendapat awalan > sehingga teks tampak sebagai kutipan — pola yang juga cocok untuk memberi tanda pada keluaran error dalam laporan CLI.
shorten untuk Ringkasan Satu Baris #
Function shorten() memotong teks panjang menjadi satu baris dengan batas karakter dan penanda elipsis:
import textwrap
judul = ("Belajar standard library Python: module textwrap "
"untuk memformat keluaran teks")
print(textwrap.shorten(judul, width=40, placeholder=" ..."))Output yang Dihasilkan:
Belajar standard library Python: ...Hasil shorten() tidak pernah melampaui width=40 termasuk placeholder-nya, dan pemotongan terjadi pada batas kata — kata "module" yang akan terpotong setengah justru dibuang seluruhnya. Karena mengembalikan satu baris, function ini cocok untuk daftar judul, ringkasan berita, atau preview pesan di CLI.
Empat function inti textwrap — wrap, fill, dedent, indent — ditambah shorten meliputi hampir semua kebutuhan pemformatan teks murni. Bersama pprint dari Chapter sebelumnya, standard library sudah menutup dua sisi tampilan: data terstruktur dan teks bebas.