| title | Python CSV Modul - Python Spickzettel |
|---|---|
| description | Python bietet ein csv-Modul, das die einfache Bearbeitung von CSV-Dateien ermöglicht. |
Das csv-Modul bietet Werkzeuge zum Lesen und Schreiben von CSV-Dateien, die üblicherweise für den Datenaustausch verwendet werden.
open() mit read oder write und split()), ist das csv-Modul dafür konzipiert, Randfälle wie Anführungszeichen in Feldern, eingebettete Trennzeichen und unterschiedliche Zeilenenden zu behandeln. Es gewährleistet die Kompatibilität mit CSV-Dateien, die von anderen Programmen (wie Excel) generiert wurden, und reduziert das Risiko von Parsing-Fehlern. Für die meisten CSV-Aufgaben sollten Sie das csv-Modul gegenüber manuellem Parsing bevorzugen.
Weitere Informationen zu den Grundlagen der Dateibehandlung finden Sie auf der Seite Datei- und Verzeichnispfade.
Um zu beginnen, importieren Sie das Modul:
import csvDiese Funktion empfängt eine Datei, die ein Iterable von Strings sein muss. Mit anderen Worten, es sollte die geöffnete Datei sein, wie folgt:
import csv
file_path = 'file.csv'
# CSV-Datei lesen
with open(file_path, 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
# Über jede Zeile iterieren
for line in reader:
print(line)Diese Funktion gibt ein Reader-Objekt zurück, über das leicht iteriert werden kann, um jede Zeile zu erhalten. Auf jede Spalte in den entsprechenden Zeilen kann über den Index zugegriffen werden, ohne die eingebaute Funktion split() verwenden zu müssen.
Diese Funktion empfängt die Datei, in die geschrieben werden soll, als CSV-Datei. Ähnlich wie bei der Reader-Funktion sollte sie wie folgt aufgerufen werden:
import csv
file_path = 'file.csv'
# Datei zum Schreiben von CSV öffnen
with open(file_path, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# etwas tunDer Block "etwas tun" kann durch die Verwendung der folgenden Funktionen ersetzt werden:
Schreibt eine einzelne Zeile in die CSV-Datei.
# Kopfzeile schreiben
writer.writerow(['name', 'age', 'city'])
# Datenzeile schreiben
writer.writerow(['Alice', 30, 'London'])Schreibt mehrere Zeilen auf einmal.
# Mehrere Zeilen vorbereiten
rows = [
['name', 'age', 'city'],
['Bob', 25, 'Paris'],
['Carol', 28, 'Berlin']
]
# Alle Zeilen auf einmal schreiben
writer.writerows(rows)Ermöglicht das Lesen von CSV-Dateien und den Zugriff auf jede Zeile als Wörterbuch, wobei standardmäßig die erste Zeile der Datei als Schlüssel (Spaltenüberschriften) verwendet wird.
import csv
# CSV als Wörterbuch lesen (erste Zeile wird zu Schlüsseln)
with open('people.csv', 'r', newline='') as csvfile:
reader = csv.DictReader(csvfile)
# Auf Spalten nach Namen statt nach Index zugreifen
for row in reader:
print(row['name'], row['age'])-
Jede
rowist einOrderedDict(oder ein reguläresdictin Python 3.8+). -
Wenn Ihre CSV-Datei keine Kopfzeilen hat, können Sie diese mit dem Parameter
fieldnamesangeben:reader = csv.DictReader(csvfile, fieldnames=['name', 'age', 'city'])
Ermöglicht das Schreiben von Wörterbüchern als Zeilen in eine CSV-Datei. Sie müssen die Feldnamen (Spaltenüberschriften) beim Erstellen des Writers angeben.
import csv
fieldnames = ['name', 'age', 'city']
rows = [
{'name': 'Alice', 'age': 30, 'city': 'London'},
{'name': 'Bob', 'age': 25, 'city': 'Paris'}
]
# Wörterbücher in CSV schreiben
with open('people_dict.csv', 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # schreibt die Kopfzeile
writer.writerows(rows)- Verwenden Sie
writer.writeheader(), um die Spaltenüberschriften als erste Zeile zu schreiben. - Jedes Wörterbuch in
writer.writerows()muss Schlüssel haben, die den beim Erstellen des Writers angegebenenfieldnamesentsprechen.
Sollte das Zeichen sein, das zur Trennung der Felder verwendet wird. Wie der Dateityp besagt, ist der Standardwert das Komma ','. Abhängig von der lokalen Einstellung kann Excel CSV-Dateien mit dem Semikolon als Trennzeichen generieren.
import csv
# CSV mit Semikolon als Trennzeichen lesen
with open('data_semicolon.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
for row in reader:
print(row)Zeichen oder Zeichenfolge, die eine Zeile beendet. Am häufigsten ist "\r\n", es kann aber auch "\n" sein.
Zeichen, das verwendet wird, um Felder zu kennzeichnen, die Sonderzeichen enthalten (Standard ist ").
# Einfaches Anführungszeichen als Kennzeichnungszeichen verwenden
reader = csv.reader(csvfile, quotechar="'")Weitere Details finden Sie in der offiziellen Python csv Moduldokumentation.