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.