Python'da CSV Dosyası Nasıl Okunur ve Ayrıştırılır

Yerleşik csv modülünü kullanarak Python'da CSV dosyalarını nasıl okuyacağınızı ve ayrıştıracağınızı öğrenin. Listeler, sözlük okuyucular ve özel sınırlayıcılar olarak okuma konusunda uzmanlaşın.

Bu Çözümü Editör'de deneyin

Genel Bakış

CSV (Virgülle Ayrılmış Değerler), tablo halindeki veri kümelerini depolamak için her yerde bulunan bir dosya formatıdır. Veritabanlarını içe aktarırken, e-tabloları dışa aktarırken veya günlükleri indirirken CSV okumak temel bir beceridir. Python, CSV dosyalarını pandalar gibi üçüncü taraf kitaplıklara ihtiyaç duymadan kolayca ayrıştırmak için özel, yüksek düzeyde optimize edilmiş yerleşik bir "csv" modülü içerir.

'csv.reader' işlevi bir dosyayı satır satır okur ve onu ayrıştırır, her satırı virgül ayırıcıya göre böler ve dize listelerini döndürür. CSV dosyanızda bir başlık satırı (ör. sütun etiketleri) varsa, genellikle "csv.DictReader" kullanılması tercih edilir. Her satırı, anahtarların sütun etiketleri olduğu bir sözlüğe otomatik olarak ayrıştırarak kodu çok daha okunabilir ve sütun sırasındaki değişikliklere karşı dayanıklı hale getirir.

CSV dosyalarını açarken, `open()` ifadesinde `newline=""` değerini ayarlamak en iyi uygulamadır. Bu, Python'un belirli işletim sistemlerinde ayrıştırma hatalarına yol açabilecek otomatik yeni satır çevirileri yapmasını engeller. Ayrıca, özel karakterleri işlemek için her zaman `encoding="utf-8"` seçeneğini belirtin.

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

Bu komut dosyası, örnek bir CSV dosyasının yazılmasını ve hem csv.reader hem de csv.DictReader kullanılarak okunmasını gösterir.

import csv

# Writing a sample CSV file
sample_content = [
    ["name", "role", "salary"],
    ["Alice", "Developer", "90000"],
    ["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(sample_content)

# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
    reader = csv.reader(file)
    header = next(reader) # Skip header row
    print("Header:", header)
    for row in reader:
         print(f"Employee: {row[0]} | Role: {row[1]}")

# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
    dict_reader = csv.DictReader(file)
    for row in dict_reader:
         print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")
Terminal Çıkışı
--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager

--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000

Adım Adım Uygulama

  • Yerleşik csv modülünü komut dosyanıza aktarın.
  • Dosya olarak open("employees.csv", "r", newline="", encoding='utf-8") kullanarak CSV dosyasını açın.
  • Dosya satırlarını dize listeleri olarak ayrıştırmak için dosya nesnesini csv.reader(file) öğesine iletin.
  • Satırları, sütun başlıklarına karşılık gelen sözlük eşlemeleri olarak ayrıştırmak için csv.DictReader(file) öğesini kullanın.

Sıkça Sorulan Sorular

Bir CSV dosyasını açarken neden newline = "" ayarlamalıyım?

newline = "" ayarının Python'un satır sonu karakterlerini dinamik olarak değiştirmesini önleyerek csv modülünün farklı işletim sistemlerinde csv tarzı yeni satırları doğru şekilde ayrıştırabilmesini sağlar.

Virgül yerine sekme veya noktalı virgül kullanan bir CSV dosyasını nasıl ayrıştırırım?

Okuyucu işlevine özel bir sınırlayıcı iletebilirsiniz: csv.reader(file, sınırlayıcı = "\t") veya csv.reader ( dosya, sınırlayıcı = ";").

İlgili Konular

Önerilen Python Kaynakları

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