Python CSV: Tabellen lesen und schreiben

Erfahren Sie, wie Sie CSV-Daten in Python verarbeiten. Master csv.reader, csv.writer und DictReader/DictWriter für effizientes Tabellenparsen.

Versuchen Sie es im Editor

Übersicht

CSV (Comma-Separated Values) ist ein allgegenwärtiges Format zum Exportieren und Importieren von Daten aus Tabellenkalkulationen und relationalen Datenbanken. Da es sich bei CSV-Dateien um einfache Textdateien handelt, werden sie allgemein von Analysetools, Datenbankplattformen und Programmiersprachen unterstützt. Python verfügt über ein integriertes „CSV“-Modul, das speziell für das Parsen, Schreiben und Bearbeiten von Tabellendaten optimiert ist, ohne dass Bibliotheken von Drittanbietern wie Pandas erforderlich sind.

Das CSV-Modul bietet zwei Hauptschnittstellen: listenbasierte Lese-/Schreibprogramme und wörterbuchbasierte Lese-/Schreibprogramme. „csv.reader()“ und „csv.writer()“ stellen jede Zeile in der CSV als Liste von Zeichenfolgen dar. Dies ist einfach, erfordert jedoch die Referenzierung von Spalten anhand ihres numerischen Index. Für einen robusteren Ansatz verwenden Entwickler „csv.DictReader()“ und „csv.DictWriter()“. Diese Klassen ordnen jede Zeile einem Wörterbuch zu, indem sie die CSV-Kopfzeile als Schlüssel verwenden, und erzeugen so gut lesbaren Code, der nicht beschädigt wird, wenn die Spalten neu angeordnet werden.

Beim Umgang mit CSV-Dateien kommt es auf die Syntaxdetails an. Verschiedene Programme verwenden unterschiedliche Trennzeichen (wie Tabulatoren oder Semikolons) und behandeln Anführungszeichen oder Zeilenenden auf unterschiedliche Weise. Mit dem „csv“-Modul können Sie über einen „dialect“-Parameter benutzerdefinierte Trennzeichen, Anführungszeichenregeln und Escape-Zeichen definieren. Darüber hinaus ist es beim Öffnen von CSV-Dateien in Python eine wichtige Anforderung, „newline=“ an die Funktion „open()“ zu übergeben, um Leerzeilenprobleme auf verschiedenen Betriebssystemen zu vermeiden.

Code- und Ausführungsausgabe

Mit DictWriter Daten in eine CSV-Datei schreiben und mit DictReader zurücklesen.

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-Ausgabe
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

Schrittweise Umsetzung

  • Exportieren von Tabellendatensätzen für die Finanzanalyse
  • Importieren von Kontaktlistenkatalogen in Datenbanken
  • Formatieren statistischer Ausgaben aus Rechenskripten

Häufig gestellte Fragen

Warum muss ich beim Öffnen einer CSV-Datei newline="" angeben?

Dies wird vom internen Writer des CSV-Moduls benötigt, um zu verhindern, dass zusätzliche Leerzeilen eingefügt werden, insbesondere auf Windows-Plattformen.

Wie kann ich eine CSV-Datei analysieren, die Tabulatoren statt Kommas verwendet?

Sie können den Trennzeichenparameter an den Leser oder Schreiber übergeben, z. B. csv.reader(file, delimiter='\t').

Verwandte Themen

Empfohlene Python-Ressourcen

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