Tagebuch-Eintrag #28
CSV-Datei lesen und schreiben in Python
In meinem vorherigen Tagebuch-Eintrag #27 ging es um Dateien lesen und schreiben. Am gleichen Tage habe ich mich auch mit den Grundlagen von CSV-Dateien in Python beschäftigt.
Im Grunde genommen, öffne ich die CSV-Dateien wie auch andere Dateien. Dabei möglich mir angewöhnt die über das Pyhton-Kontrukt with zu tun.
Der Inhalt meiner Beispiel-CSV-Datei behinhaltet drei Produkte von kino-kaesesauce.de bestehend aus Produktname, Artikelnummer und Preis. Jeweils mit einem Semikolon (;) getrennt.
Originale UCI Käsesauce (3 Gläser);9997;11,99
Originale UCI Käsesauce (4 Gläser);9996;19,95
Originale UCI Käsesauce (6 Gläser);9994;28,95
Ich lese dann die Inhalte der CSV-Datei mit folgendem Code ein:
with open("lesen.csv","r") as csv_file:
for row in csv_file:
data = row.strip().split(";")
print ("Artikel: " + data[0] + " Artikelnummer: " + data[1] + " Artikelpreis: " + data[2])
Datei füge ich vor jedem Index-Wert die jeweilige Bezeichnung wie Artikel, Artikelnummer und Preis ein. Und die Ausgabe der CSV-Datei sieht so aus:

Encoding-Problem mit Umlaute
Dabei ist mir aufgefallen, dass der Umlauf ä nicht korrekt ausgegeben wird. Das darf nicht sein. Für den ersten Moment war ich etwas ratlos. In den mir vorliegenden Tutorials trat das Problem nicht auf und/oder wurde nicht behandelt. Ich muss also selbst nach einer Lösung suchen und diese habe ich auch glücklicherweise schnell im Internet gefunden.
Die Lösung ist, dass ich in der open-Anweisung auch Encoding-Methode angeben kann.

Also ergänzte ich meinem Code wie obigen Screenshot zu sehen mit encoding=“UTF-8″ und schon wurde das Umlaut ä korrekt ausgegeben. Das ß wird damit auch richtig ausgegeben.

Also merke: Wenn Umlaute nicht korrekt ausgegeben oder ausgelesen werden können, dann muss ich die Encoding-Anweisung hinzufügen.
CSV Datei schreiben
Ich habe heute (16.05.2020) gesehen, dass der Teil zum CSV Schreiben hier nicht dabei ist. Habe ich wohl in der Eile komplett vergessen. Aber das hole jetzt mal schnell nach und zwar halte ich mich nach der einfachen Methode wie eine Txt-Datei beschreiben.
Ich meinem Beispiel erstelle ich eine einfache Liste mit Produkten.
items = ["Produkt A", "Produkt B", "Produkt C"]
Diese Produkte möchte ich dann mit einem Semikolon getrennt in einer CSV-Datei schreiben.
with open("write_csv.csv", "w") as file:
for item in items:
file.write(item + ";")
Über with open öffne ich die Datei, die beschrieben werden soll. Ist diese Datei nicht vorhanden, wird es automatisch erstellt.
Nach dem die Datei geöffnet oder erstellt wurde, lasse ich eine for-Schleife durch meine items-Liste laufen und jedes Produkt wird dann mit einem Semikolon getrennt in der CSV-Datei geschrieben.
Produkt A;Produkt B;Produkt C;
Sehr simple Übung um das Grundverständnis zu üben 🙂