Python-csv-Modul

CSV-Dateien (Comma-Separated Values) sind ein gängiges Dateiformat, das zum Speichern tabellarischer Daten verwendet wird.

CSV-Dateien bestehen aus reinem Text, wobei jede Zeile eine Datenzeile in der Tabelle darstellt und jede Spalte durch Kommas (oder andere Trennzeichen) getrennt ist.

CSV-Dateien werden häufig für den Datenaustausch verwendet, weil sie einfach und leicht zu verarbeiten sind.

Python bietet ein integriertescsvModul zum Lesen und Schreiben von CSV-Dateien. Dieses Modul vereinfacht den Umgang mit CSV-Dateien und ermöglicht Entwicklern, tabellarische Daten einfach zu bearbeiten.


1. CSV-Dateien lesen

Um CSV-Dateien zu lesen, können Sie dascsv.reader-Objekt verwenden. Hier ist ein einfaches Beispiel:

Beispiel

import csv

# CSV-Datei öffnen
with open('data.csv', mode='r', encoding='utf-8') as file:
    # Ein csv.reader-Objekt erstellen
    csv_reader = csv.reader(file)
   
    # Daten Zeile für Zeile lesen
    for row in csv_reader:
        print(row)

Code-Erklärung:

  • open('data.csv', mode='r', encoding='utf-8'): Öffnen Sie im schreibgeschützten Modus die Datei namensdata.csvund geben Sie die Kodierung als UTF-8 an.
  • csv.reader(file): Erstellen Sie eincsv.reader-Objekt, um den Dateiinhalt zu lesen.
  • for row in csv_reader: Liest den Dateiinhalt Zeile für Zeile, und jede Datenzeile wird in eine Liste geparst.

2. CSV-Dateien schreiben

Um in CSV-Dateien zu schreiben, können Sie dascsv.writerObjekt verwenden. Hier ist ein Beispiel:

Beispiel

import csv

# Zu schreibende Daten
data = [
    ['Name', 'Age', 'City'],
    ['Alice', '30', 'New York'],
    ['Bob', '25', 'Los Angeles']
]

# CSV-Datei öffnen
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    # Ein csv.writer-Objekt erstellen
    csv_writer = csv.writer(file)
   
    # Daten schreiben
    for row in data:
        csv_writer.writerow(row)

Code-Erklärung:

  • open('output.csv', mode='w', encoding='utf-8', newline=''): Im Schreibmodus die Datei mit dem Namen öffnenoutput.csvund geben Sie die Kodierung als UTF-8 an.newline=''Wird verwendet, um Leerzeilen in Windows-Systemen zu vermeiden.
  • csv.writer(file): Erstellen Sie eincsv.writerObjekt zum Schreiben des Dateiinhalts.
  • csv_writer.writerow(row): Schreibt jede Datenzeile in die Datei.

3. Lesen und Schreiben von CSV-Dateien mithilfe von Wörterbüchern

csvDas Modul bietet außerdem dieDictReaderundDictWriterKlassen, die jede Zeile einer CSV-Datei in ein Wörterbuch parsen oder Wörterbücher in eine CSV-Datei schreiben können.

VerwendungDictReaderzum Lesen von CSV-Dateien:

Beispiel

import csv

with open('data.csv', mode='r', encoding='utf-8') as file:
    csv_dict_reader = csv.DictReader(file)
   
    for row in csv_dict_reader:
        print(row)

VerwendungDictWriterzum Schreiben von CSV-Dateien:

Beispiel

import csv

data = [
    {'Name': 'Alice', 'Age': '30', 'City': 'New York'},
    {'Name': 'Bob', 'Age': '25', 'City': 'Los Angeles'}
]

with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    fieldnames = ['Name', 'Age', 'City']
    csv_dict_writer = csv.DictWriter(file, fieldnames=fieldnames)
   
    # Kopfzeile schreiben
    csv_dict_writer.writeheader()
   
    # Daten schreiben
    for row in data:
        csv_dict_writer.writerow(row)

Häufige Attribute und Methoden

Kernmethoden des csv-Moduls

MethodeBeschreibungBeispiel
csv.reader()CSV-Daten aus einem Dateiobjekt lesenreader = csv.reader(file)
csv.writer()Daten in eine CSV-Datei schreibenwriter = csv.writer(file)
csv.DictReader()CSV-Zeilen als Dictionaries lesen (mit Kopfzeile)dict_reader = csv.DictReader(file)
csv.DictWriter()Dictionaries in eine CSV-Datei schreiben (Feldnamen erforderlich)dict_writer = csv.DictWriter(file, fieldnames)
csv.register_dialect()Ein benutzerdefiniertes CSV-Format registrieren (z. B. Trennzeichen)csv.register_dialect('mydialect', delimiter='|')
csv.unregister_dialect()Einen registrierten Dialekt löschencsv.unregister_dialect('mydialect')
csv.list_dialects()Alle registrierten Dialekte auflistenprint(csv.list_dialects())

Häufige Methoden von csv.reader- und csv.writer-Objekten

MethodeBeschreibungAnwendbares Objekt
__next__()Iterativ die nächste Zeile lesen (oder verwenden Sie eineforSchleife)reader
writerow(row)Eine einzelne Datenzeile schreibenwriter
writerows(rows)Mehrere Datenzeilen schreiben (eine Liste von Listen)writer

Eigenschaften von csv.DictReader- und csv.DictWriter-Objekten

Merkmal/MethodeBeschreibungBeispiel
fieldnamesFeldnamenliste (DictReaderautomatisch aus der ersten Zeile ermittelt)dict_reader.fieldnames
writeheader()Kopfzeile schreiben (DictWriterausschließlich)dict_writer.writeheader()

Allgemeine Parameterbeschreibungen

ParameterBeschreibungBeispielwertAnwendbare Methode
delimiterFeldtrennzeichen','(Standard)'\t'reader/writer
quotecharAnführungszeichen (umschließt spezielle Felder)'"'(Standard)reader/writer
quotingQuoting-Regelcsv.QUOTE_ALL(alle in Anführungszeichen setzen)reader/writer
skipinitialspaceLeerzeichen nach dem Trennzeichen ignorierenTrue/Falsereader
lineterminatorZeilenende'\r\n'(Standard)writer
dialectVordefinierter Dialektname'excel'(Standard)Alle Methoden

Beispiel

1. CSV-Dateien lesen

Beispiel

import csv

with open('data.csv', 'r') as Datei:
    reader = csv.reader(file, delimiter=',')
    for row in reader:
        print(row)  # Jede Zeile ist eine Liste

2. CSV-Dateien schreiben

Beispiel

data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)  # Mehrere Zeilen schreiben

3. Verwenden von DictReader und DictWriter (mit Kopfzeile)

Beispiel

# Lesen
with open('data.csv', 'r') as Datei:
    dict_reader = csv.DictReader(file)
    for row in dict_reader:
        print(row['Name'], row['Age'])  # Zugriff über Feldnamen

# Schreiben
fieldnames = ['Name', 'Age']
with open('output.csv', 'w', newline='') as file:
    dict_writer = csv.DictWriter(file, fieldnames=fieldnames)
    dict_writer.writeheader()  # Kopfzeile schreiben
    dict_writer.writerow({'Name': 'Alice', 'Age': 25})

4. Benutzerdefinierte Dialekte (z. B. Umgang mit TSV-Dateien)

Beispiel

csv.register_dialect('tsv', delimiter='\t', quoting=csv.QUOTE_NONE)

with open('data.tsv', 'r') as Datei:
    reader = csv.reader(file, dialect='tsv')
    for row in reader:
        print(row)
Andere Erweiterungen