Python CSV: Elektronik Tabloları Okumak ve Yazmak

Python'da CSV verilerinin nasıl işleneceğini öğrenin. Verimli tablo ayrıştırma için csv.reader, csv.writer ve DictReader/DictWriter'da uzmanlaşın.

Editör'de deneyin

Genel Bakış

CSV (Virgülle Ayrılmış Değerler), elektronik tablolardan ve ilişkisel veritabanlarından verileri dışa ve içe aktarmak için her yerde kullanılan bir formattır. CSV dosyaları basit metin dosyaları olduğundan evrensel olarak analitik araçlar, veritabanı platformları ve programlama dilleri tarafından desteklenirler. Python, pandalar gibi üçüncü taraf kitaplıklara ihtiyaç duymadan tablo halindeki verileri ayrıştırmak, yazmak ve değiştirmek için özel olarak optimize edilmiş yerleşik bir "csv" modülüne sahiptir.

CSV modülü iki ana arayüz sağlar: liste tabanlı okuyucular/yazıcılar ve sözlük tabanlı okuyucular/yazıcılar. "csv.reader()" ve "csv.writer()", CSV'deki her satırı bir dize listesi olarak temsil eder; bu basittir ancak sütunlara sayısal dizinlerine göre başvuru yapılmasını gerektirir. Daha sağlam bir yaklaşım için geliştiriciler 'csv.DictReader()' ve 'csv.DictWriter()' kullanır. Bu sınıflar, CSV başlık satırını anahtar olarak kullanarak her satırı bir sözlüğe eşler ve sütunlar yeniden sıralandığında bozulmayan, yüksek düzeyde okunabilir kod üretir.

CSV dosyalarıyla uğraşırken sözdizimi ayrıntıları önemlidir. Farklı programlar farklı sınırlayıcılar (sekmeler veya noktalı virgüller gibi) kullanır ve tırnak işaretlerini veya satır sonlarını farklı şekillerde işler. 'Csv' modülü, bir 'lehçe' parametresi aracılığıyla özel sınırlayıcılar, alıntı kuralları ve kaçış karakterleri tanımlamanıza olanak tanır. Ek olarak, CSV dosyalarını Python'da açarken, farklı işletim sistemlerinde boş satır sorunlarını önlemek için "newline="'' open()' işlevine iletilmesi kritik bir gerekliliktir.

Kod ve Yürütme Çıkışı

DictWriter'ı kullanarak verileri bir CSV dosyasına yazma ve DictReader ile tekrar okuma.

import csv

filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
    {"id": "101", "name": "Bob", "department": "HR"},
    {"id": "102", "name": "Alice", "department": "Engineering"}
]

# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

print("CSV written successfully.\n--- Reading CSV ---")

# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(f"Employee {row['name']} works in {row['department']}.")
Terminal Çıkışı
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

Adım Adım Uygulama

  • Finansal analiz için elektronik tablo kayıtlarını dışa aktarma
  • Kişi listesi kataloglarını veritabanlarına aktarma
  • Hesaplamalı komut dosyalarından istatistiksel çıktıları biçimlendirme

Sıkça Sorulan Sorular

Bir CSV dosyasını açarken neden newline="" belirtmem gerekiyor?

Bu, özellikle Windows platformlarında fazladan boş satırların eklenmesini önlemek için csv modülünün dahili yazıcısı tarafından gereklidir.

Virgül yerine sekme kullanan bir CSV dosyasını nasıl ayrıştırabilirim?

Sınırlayıcı parametresini okuyucuya veya yazıcıya iletebilirsiniz; örneğin, csv.reader(file, ayırıcı='\t').

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.