Python bietet mächtige Funktionen um CSV-Dateien effektiv zu bearbeiten. Die entsprechende CSV Bibliothek wird gleich mitgeliefert.
CSV-Dateien in Python lesen und schreiben funktioniert elegant über DictReader
und DictWriter
. Beispiele dazu hier:
Python: Lesen einer CSV-Datei
DictReader() liefert ein Dictionary mit den CSV-Spaltennamen als Keys und den Inhalten der aktuellen Zeile als Values:
1 2 3 4 5 6 7 8 |
import csv with open('beispiel.csv', 'r') as file: reader = csv.DictReader(file) for row in reader: # Hier kannst du auf die Daten in jeder Zeile zugreifen print(row['Name'], row['Alter'], row['Stadt']) |
Python: Schreiben einer CSV-Datei
DictWriter schreibt zuerst einen definierten CSV-Header und dann in einem Rutsch alle Datensätze:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import csv fieldnames = ['Name', 'Alter', 'Stadt'] data = [ {'Name': 'John', 'Alter': '25', 'Stadt': 'New York'}, {'Name': 'Alice', 'Alter': '30', 'Stadt': 'London'}, {'Name': 'Bob', 'Alter': '35', 'Stadt': 'Berlin'} ] with open('beispiel.csv', 'w', newline='') as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerows(data) |
Verschiedene CSV-Datei Formate mit Python lesen und schreiben
Mehr zu DictReader und DictWriter findet ihr hier. Interessant sind insbesondere die Parameter um z.B. Trennzeichen für Felder (delimiter), Trennzeichen für Strings (quoting), Zeichenkodierung (encoding) und vieles mehr zu konfigurieren.
So können z.B. auch Unix-Passwort-Dateien gelesen werden, indem einfach die betreffenden Parameter angepasst werden:
1 2 3 4 |
import csv csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE) with open('passwd', newline='') as f: reader = csv.reader(f, 'unixpwd') |
Hallo, ich habe den Code zum Lesen der CSV mal kopiert und in die IDLE Shell eingefügt. Den Pfad zur Datei habe ich auch eingetragen. Nur es kommt ein Fehler zurück.
import csv
with open(‘C:BenutzerDesktopbeispiel.csv’, ‘r’) as file:
reader = csv.DictReader(file)
for row in reader:
# Hier kannst du auf die Daten in jeder Zeile zugreifen
print(row[‘Name’], row[‘Alter’], row[‘Stadt’])
SyntaxError: multiple statements found while compiling a single statement
Es fehlt ein \ nach C: und der Code muss richtig eingerückt sein.
Danke, nur was genau ist nicht richtig eingerückt?
Danke wo genau muss ich richtig einrücken, für mich sieht das so gut aus.
https://www.kirenz.com/tutorials/data-science-toolkit/python/python-einrueckung
Hallo danke für die Info, ich habe jetzt verschieden Einrückungen probiert, leider funktioniert es nicht. Welche Einrückung ist genau falsch, an die vier Leerzeichen habe ich mich gehalten.
VG
Hallo Bernd,
Deiner Antwort entnehme ich daß Du noch keine oder sehr wenig Erfahrung mit Python hast.
Daher meine Empfehlung:
Dieser Kurs mit PyCharm Community Edition als Editor (Link und Anleitung ebenfalls im Kurs): https://programmieren-starten.de/blog/python-lernen/
Falls Du lieber per Video lernst, ist Udemy eine sehr gute Quelle:
https://www.udemy.com/courses/search/?instructional_level=beginner&lang=de&q=python+grundkurs+pycharm&ratings=4.5&sort=relevance&src=ukw
Noch als Ergänzung:
Beim Einrücken kommt es darauf an wie dein Editor konfiguriert ist. Vorgabe können 2 oder 4 Leerzeichen oder auch Tabs sein. PyCharm gibt z.B. genaue Hinweise bei zu vielen oder fehlenden Leerzeichen bzw. Tabs und ist deswegen besser geeignet als z.B. IDLE …
Hallo, das ist ein interessanter Artikel, gibt es auch die Beispiel csv irgendwo?
Hallo Bernd,
der Aufbau der CSV ist einfach:
Name;Alter;Stadt
John;32;New York
Linda;24;Paris