Python

Umgang mit CSV-Dateien in Python

Umgang mit CSV-Dateien in Python
Dieser Artikel behandelt ein Tutorial zum Umgang mit „csv“-Dateien mit Python. Der Begriff „csv“ steht für „comma Separated Values“, wobei jede Zeile oder Zeile textbasierte Werte enthält, die durch Kommas getrennt sind. In manchen Fällen wird auch „Semikolon“ anstelle von „Komma“ verwendet, um Werte zu trennen. Dies hat jedoch keinen großen Einfluss auf die Dateiformatregeln und die Logik zum Umgang mit beiden Arten von Trennzeichen bleibt gleich.

Das CSV-Dateiformat wird am häufigsten für die Pflege von Datenbanken und Tabellenkalkulationen verwendet. Die erste Zeile in einer CSV-Datei wird am häufigsten verwendet, um Spaltenfelder zu definieren, während alle anderen verbleibenden Zeilen als Zeilen betrachtet werden. Diese Struktur ermöglicht es Benutzern, tabellarische Daten mithilfe von CSV-Dateien zu präsentieren. CSV-Dateien können in jedem Texteditor bearbeitet werden. Anwendungen wie LibreOffice Calc bieten jedoch erweiterte Bearbeitungswerkzeuge, Sortier- und Filterfunktionen.

Lesen von Daten aus CSV-Dateien mit Python

Mit dem CSV-Modul in Python können Sie alle in CSV-Dateien gespeicherten Daten lesen, schreiben und bearbeiten. Um eine CSV-Datei zu lesen, müssen Sie die Methode „reader“ aus Pythons „csv“-Modul verwenden, das in der Python-Standardbibliothek enthalten ist.

Bedenken Sie, dass Sie eine CSV-Datei mit folgenden Daten haben:

Mango,Banane,Apfel,Orange
50,70,30,90

Die erste Zeile der Datei definiert jede Spaltenkategorie, in diesem Fall den Namen der Früchte. Die zweite Zeile speichert Werte unter jeder Spalte (Lagerbestand). Alle diese Werte werden durch ein Komma getrennt. Wenn Sie diese Datei in einer Tabellenkalkulationsanwendung wie LibreOffice Calc öffnen würden, würde sie so aussehen:

Um nun Werte aus „Früchten“ abzulesen.csv“-Datei mit dem Python-Modul „csv“ verwenden, müssen Sie die Methode „reader“ im folgenden Format verwenden:

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.Leser (Datei)
für Zeile in data_reader:
drucken (Linie)

Die erste Zeile im obigen Beispiel importiert das „csv“-Modul. Als nächstes wird die Anweisung „with open“ verwendet, um eine auf Ihrer Festplatte gespeicherte Datei sicher zu öffnen („fruits.csv“ in diesem Fall). Ein neues „data_reader“-Objekt wird durch Aufrufen der „reader“-Methode aus dem „csv“-Modul erstellt. Diese „Reader“-Methode verwendet einen Dateinamen als obligatorisches Argument, daher ist der Verweis auf „fruits“.csv“ wird an ihn übergeben. Als nächstes wird eine „for“-Schleifenanweisung ausgeführt, um jede Zeile aus dem „fruits.csv“-Datei. Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

['50', '70', '30', '90']

Wenn Sie der Ausgabe Zeilennummern zuweisen möchten, können Sie die Funktion „Aufzählen“ verwenden, die jedem Element in einem Iterable eine Nummer zuweist (beginnend mit 0, sofern nicht geändert).

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.Leser (Datei)
für Index, Zeile in Aufzählung (data_reader):
drucken (Index, Zeile)

Die Variable „index“ hält die Zählung für jedes Element. Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

0 ['Mango', 'Banane', 'Apfel', 'Orange']
1 ['50', '70', '30', '90']

Da die erste Zeile in einer „csv“-Datei normalerweise Spaltenüberschriften enthält, können Sie diese Überschriften mit der Funktion „aufzählen“ extrahieren:

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.Leser (Datei)
für Index, Zeile in Aufzählung (data_reader):
wenn Index == 0:
Überschriften = Zeile
drucken (Überschriften)

Der „if“-Block in der obigen Anweisung prüft, ob der Index gleich Null ist (erste Zeile in „fruits.csv“-Datei). Wenn ja, wird der Wert der Variablen „line“ einer neuen Variablen „headings“ zugewiesen. Nachdem Sie das obige Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

['Mango', 'Banane', 'Apfel', 'Orange']

Beachten Sie, dass Sie beim Aufrufen von „csv .“ Ihr eigenes Trennzeichen verwenden können.reader“-Methode mithilfe eines optionalen „delimiter“-Arguments im folgenden Format:

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.Leser(Datei, Trennzeichen=";")
für Zeile in data_reader:
drucken (Linie)

Da in einer CSV-Datei jede Spalte mit Werten in einer Zeile verknüpft ist, möchten Sie möglicherweise ein Python-„Wörterbuch“-Objekt erstellen, wenn Sie Daten aus einer „CSV“-Datei lesen. Dazu müssen Sie die Methode "DictReader" verwenden, wie im folgenden Code gezeigt:

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.DictReader(Datei)
für Zeile in data_reader:
drucken (Linie)

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

'Mango': '50', 'Banane': '70', 'Apfel': '30', 'Orange': '90'

Jetzt haben Sie also ein Wörterbuchobjekt, das einzelne Spalten mit ihren entsprechenden Werten in den Zeilen verknüpft. Das funktioniert gut, wenn Sie nur eine Zeile haben. Nehmen wir an, die „Früchte“.csv“-Datei enthält jetzt eine zusätzliche Zeile, die angibt, wie viele Tage es dauert, bis der Obstvorrat verrottet.

Mango,Banane,Apfel,Orange
50,70,30,90
3,1,6,4

Wenn Sie mehrere Zeilen haben, führt die Ausführung desselben Codebeispiels oben zu einer anderen Ausgabe.

'Mango': '50', 'Banane': '70', 'Apfel': '30', 'Orange': '90'
'Mango': '3', 'Banane': '1', 'Apfel': '6', 'Orange': '4'

Dies ist möglicherweise nicht ideal, da Sie möglicherweise alle Werte einer Spalte einem Schlüssel-Wert-Paar in einem Python-Wörterbuch zuordnen möchten. Versuchen Sie stattdessen dieses Codebeispiel:

CSV-Datei importieren
mit offenem("Früchte.csv") als Datei:
data_reader = csv.DictReader(Datei)
data_dict =
für Zeile in data_reader:
für Schlüssel, Wert in Zeile.Artikel():
data_dict.setdefault(key, [])
data_dict[Schlüssel].anhängen(Wert)
drucken (data_dict)

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

'Mango': ['50', '3'], 'Banane': ['70', '1'], 'Apfel': ['30', '6'], 'Orange': ['90 ', '4']

Eine „for“-Schleife wird für jedes Element des „DictReader“-Objekts verwendet, um Schlüssel-Wert-Paare zu durchlaufen. Davor wird eine neue Python-Wörterbuchvariable „data_dict“ definiert. Es speichert die endgültigen Datenzuordnungen. Unter dem zweiten „for“-Schleifenblock wird die „setdefault“-Methode des Python-Wörterbuchs verwendet. Diese Methode weist einem Wörterbuchschlüssel einen Wert zu. Wenn das Schlüssel-Wert-Paar nicht existiert, wird aus den angegebenen Argumenten ein neues erstellt created. In diesem Fall wird also einem Schlüssel eine neue leere Liste zugewiesen, wenn er noch nicht existiert. Zuletzt wird „value“ an den entsprechenden Schlüssel im finalen „data_dict“-Objekt angehängt.

Schreiben von Daten in eine CSV-Datei

Um Daten in eine „csv“-Datei zu schreiben, müssen Sie die „writer“-Methode aus dem „csv“-Modul verwenden. Im folgenden Beispiel wird eine neue Zeile an die vorhandenen „Früchte“ angehängt.csv“-Datei.

CSV-Datei importieren
mit offenem("Früchte.csv", "a") als Datei:
data_writer = csv.Schriftsteller (Datei)
data_writer.Schreibzeile([3,1,6,4])

Die erste Anweisung öffnet die Datei im „append“-Modus, gekennzeichnet durch das Argument „a“. Als nächstes wird die Methode „writer“ aufgerufen und der Verweis auf „fruits“.csv“-Datei wird ihr als Argument übergeben. Die Methode „writerow“ schreibt oder fügt eine neue Zeile in die Datei ein.

Wenn Sie das Python-Wörterbuch in eine „csv“-Dateistruktur konvertieren und die Ausgabe in einer „csv“-Datei speichern möchten, versuchen Sie diesen Code:

CSV-Datei importieren
mit offenem("Früchte.csv", "w") als Datei:
Überschriften = ["Mango", "Banane", "Apfel", "Orange"]
data_writer = csv.DictWriter(Datei, Feldnamen=Überschriften)
data_writer.Schreibkopf()
data_writer.writerow("Mango": 50, "Banane": 70, "Apfel": 30, "Orange": 90)
data_writer.writerow("Mango": 3, "Banane": 1, "Apfel": 6, "Orange": 4)

Nach dem Öffnen einer leeren „Früchte“.csv“-Datei mit einer „with open“-Anweisung wird eine neue Variable „headings“ definiert, die Spaltenüberschriften enthält. Ein neues Objekt „data_writer“ wird erstellt, indem die Methode „DictWriter“ aufgerufen und die Referenz an die „fruits“ übergeben wird.csv“-Datei und ein „fieldnames“-Argument. In der nächsten Zeile werden Spaltenüberschriften mit der Methode „writeheader“ in die Datei geschrieben. Die letzten beiden Anweisungen fügen ihren entsprechenden Überschriften, die im vorherigen Schritt erstellt wurden, neue Zeilen hinzu.

Fazit

CSV-Dateien bieten eine saubere Möglichkeit, Daten im Tabellenformat zu schreiben. Das integrierte „csv“-Modul von Python macht es einfach, in „csv“-Dateien verfügbare Daten zu verarbeiten und weitere Logik darauf zu implementieren.

Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...
So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...