Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Python: Objek dan Berkas

Pelajaran 13 dari 16

CSV, JSON, dan modul

CSV dengan DictReader dan DictWriter

Setelah pelajaran ini kamu bisa membaca CSV menjadi dict per baris, mengubah kolom angka dari teks, dan menulis CSV baru beserta baris judulnya.

±14 menitDiperiksa 5 Okt 2026

Materi

CSV menyimpan tabel sebagai teks: satu baris per rekaman, kolom dipisah koma, dan nilai yang memuat koma dibungkus tanda kutip. Modul csv menangani aturan kutip itu. Memecah baris sendiri dengan split(",") memotong nama seperti "Jl. Merdeka, No. 5" menjadi dua kolom.

csv.DictReader membaca baris pertama sebagai judul kolom dan memberi setiap baris berikutnya sebagai dict judul → nilai. Semua nilainya teks: stok "35" harus diubah dengan int() sebelum dijumlahkan. Dokumentasi csv meminta berkas dibuka dengan newline=""; tanpanya, baris baru di dalam nilai berkutip terbaca salah, dan di Windows setiap baris yang ditulis mendapat baris kosong tambahan.

import csv

with open("pegawai.csv", newline="", encoding="utf-8") as f:
    pegawai = list(csv.DictReader(f))
print(pegawai[0])   # {'nama': 'Rahmat', 'kota': 'Bogor', 'gaji': '5800000'}

with open("pegawai_bogor.csv", "w", newline="", encoding="utf-8") as f:
    penulis = csv.DictWriter(f, fieldnames=["nama", "gaji"], extrasaction="ignore")
    penulis.writeheader()
    for p in pegawai:
        if p["kota"] == "Bogor":
            penulis.writerow(p)

csv.DictWriter(f, fieldnames=[...]) menulis dict menjadi baris dengan urutan kolom sesuai fieldnames. writeheader() menulis baris judul, writerow(d) satu baris, writerows(daftar) banyak baris sekaligus. Bila dict memuat kunci yang tidak ada di fieldnames, DictWriter berhenti dengan ValueError, kecuali diberi extrasaction="ignore" seperti di contoh.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

nilai.csv berisi tiga baris: nama,nilai lalu Ani,80 lalu Budi,75. Apa yang tercetak?

import csv

with open("nilai.csv", newline="", encoding="utf-8") as f:
    baris = list(csv.DictReader(f))
print(baris[0]["nilai"] + baris[1]["nilai"])
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke