Python
DictReader ve DictWriter
csv.DictReader ve DictWriter ile sözlük olarak CSV öğrenirsin.
DictReader ile sözlük okuma
csv.DictReader(f) her satırı bir sözlük (dict) olarak verir. Dosyadaki başlık satırı anahtar olur; veri satırları değer olarak gelir. row["ad"] gibi anahtarla erişirsin; sütun sırasını hatırlamak zorunda kalmazsın.
Bu yöntem, başlık adlarının kodda anlamlı olduğu verilerde çok okunaklıdır. Örneğin uye["eposta"] demek, row[3] demekten daha anlamlıdır. Sözlük yapısı sayesinde sütun eklenip çıkarılması da kodu az etkiler.
DictWriter ile sözlük yazma
csv.DictWriter(f, fieldnames=["ad", "yas"]) ile bir yazıcı oluşturursun. writer.writeheader() başlık satırını yazar; writer.writerow({"ad": "Ayşe", "yas": 30}) ise bir veri satırını sözlükten üretir.
fieldnames listesi sütun sırasını belirler; sözlükte anahtarlar farklı sırada olsa bile çıktı tutarlı olur. Bu özellik, veriyi kullanıcıdan topladığında ve sütun sırasının sabit kalması gerektiğinde kullanışlıdır.
Uygulama DictReader ile ad sütununu oku
Önce import csv satırını ekle. with open("kisiler.csv", "w", encoding="utf-8", newline="") as f: bloğu içinde f.write("name,age\n"), f.write("Ayşe,30\n") ve f.write("Ali,25\n") ile üç satır yaz. Sonra with open("kisiler.csv", "r", encoding="utf-8", newline="") as f: bloğu içinde reader = csv.DictReader(f) ve rows = list(reader) ile satırları al. print(rows[1]["name"]) ile ikinci satırın adını yazdır.
Örnek çözümü göster
import csv
# CSV dosyasına başlık + iki satır yaz
with open("kisiler.csv", "w", encoding="utf-8", newline="") as f:
f.write("name,age\n")
f.write("Ayşe,30\n")
f.write("Ali,25\n")
# DictReader ile oku, ikinci satırın adını yazdır
with open("kisiler.csv", "r", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
rows = list(reader)
print(rows[1]["name"])
Kendini test et
-
DictReader parçalarını eşleştir
- DictReader
- Sözlük olarak okur
- row
- Sözlük satırı
- header
- Anahtar satırı
- key
- Sözlük anahtarı
-
DictReader bir satırı ne olarak verir?
- Dize olarak
- Sözlük olarak
- Liste olarak
- Demet olarak
Cevabı göster
Sözlük olarak — DictReader her satırı sözlük olarak verir; anahtarlar başlıktan gelir.
-
DictWriter fieldnames tamamla
writer = csv.DictWriter(f, ____=["ad", "yas"])
Cevabı göster
writer = csv.DictWriter(f, fieldnames=["ad", "yas"])
Sıradaki ders: json.load ve dump