So lesen und analysieren Sie eine CSV-Datei in Python

Erfahren Sie, wie Sie CSV-Dateien in Python mithilfe des integrierten CSV-Moduls lesen und analysieren. Meistern Sie das Lesen als Listen, Wörterbuch-Reader und benutzerdefinierte Trennzeichen.

Probieren Sie diese Lösung im Editor aus

Übersicht

CSV (Comma-Separated Values) ist ein allgegenwärtiges Dateiformat zum Speichern tabellarischer Datensätze. Egal, ob Sie Datenbanken importieren, Tabellen exportieren oder Protokolle herunterladen, das Lesen von CSV-Dateien ist eine Kernkompetenz. Python enthält ein dediziertes, hochoptimiertes integriertes „CSV“-Modul zum einfachen Parsen von CSV-Dateien, ohne dass Bibliotheken von Drittanbietern wie Pandas erforderlich sind.

Die Funktion „csv.reader“ liest eine Datei Zeile für Zeile und analysiert sie, teilt jede Zeile durch das Komma-Trennzeichen auf und gibt Listen mit Zeichenfolgen zurück. Wenn Ihre CSV-Datei eine Kopfzeile hat (z. B. Spaltenbeschriftungen), wird häufig die Verwendung von „csv.DictReader“ bevorzugt. Jede Zeile wird automatisch in ein Wörterbuch analysiert, in dem die Spaltenbezeichnungen die Schlüssel sind, wodurch der Code viel lesbarer und robuster gegenüber Änderungen in der Spaltenreihenfolge wird.

Beim Öffnen von CSV-Dateien empfiehlt es sich, „newline=""` in der `open()`-Anweisung festzulegen. Dies verhindert, dass Python automatisierte Zeilenumbrüche durchführt, was auf bestimmten Betriebssystemen zu Parsing-Fehlern führen kann. Geben Sie außerdem immer „encoding="utf-8"` an, um Sonderzeichen zu verarbeiten.

Code- und Ausführungsausgabe

Dieses Skript demonstriert das Schreiben einer Beispiel-CSV-Datei und deren Lesen mit csv.reader und csv.DictReader.

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-Ausgabe
--- 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

Schrittweise Umsetzung

  • Importieren Sie das integrierte CSV-Modul in Ihr Skript.
  • Öffnen Sie die CSV-Datei mit open("employees.csv", "r", newline="", binding="utf-8") als Datei.
  • Übergeben Sie das Dateiobjekt an csv.reader(file), um die Dateizeilen als Zeichenfolgenlisten zu analysieren.
  • Verwenden Sie csv.DictReader(file), um Zeilen als Wörterbuchzuordnungen zu analysieren, die den Spaltenüberschriften entsprechen.

Häufig gestellte Fragen

Warum sollte ich beim Öffnen einer CSV-Datei newline="" setzen?

Das Festlegen von newline="" verhindert, dass Python Zeilenendezeichen dynamisch ändert, und stellt so sicher, dass das CSV-Modul Zeilenumbrüche im CSV-Stil auf verschiedenen Betriebssystemen korrekt analysieren kann.

Wie analysiere ich eine CSV-Datei, die Tabulatoren oder Semikolons anstelle von Kommas verwendet?

Sie können der Lesefunktion ein benutzerdefiniertes Trennzeichen übergeben: csv.reader(file, delimiter="\t") oder csv.reader(file, delimiter=";").

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.