Lesen CSV Zeile für Zeile in Python

Shikha Chaudhary 30 Januar 2023
  1. Dateistruktur einer CSV-Datei
  2. Lesen einer CSV-Datei Zeile für Zeile mit csv.reader in Python
  3. Lesen einer CSV-Datei Zeile für Zeile mit dem Objekt DictReader in Python
  4. Fazit
Lesen CSV Zeile für Zeile in Python

In Python ist es üblich, eine Datei zu lesen und spaltenweise zu drucken. Das Lesen der Datei Zeile für Zeile kann jedoch manchmal etwas verwirrend sein.

Dieser Artikel befasst sich mit dem Lesen einer CSV-Datei Zeile für Zeile in Python. Wir werden das Python-Modul csv verwenden, um mit den CSV-Dateien in Python umzugehen.

Bevor wir die CSV-Datei zeilenweise einlesen, schauen wir uns zunächst das Dateiformat der CSV-Dateien an. Dies hilft uns, die CSV-Dateien besser zu manipulieren.

Dateistruktur einer CSV-Datei

CSV steht für Comma Separated Values; Es ist ein einfaches Dateiformat, das Daten in Tabellen speichert. Diese Tabellen können in Form einer Tabellenkalkulation oder einer Datenbank vorliegen.

Wir können auch eine CSV-Datei in einem einfachen Texteditor wie Notepad erstellen. Jede Zeile der CSV-Datei entspricht einem Datensatz der Tabelle.

Außerdem hat jeder Datensatz ein oder mehrere Felder. Der Querschnitt eines Feldes und eines Datensatzes wird als Zelle bezeichnet. Diese Felder werden durch Kommas (,) getrennt.

Manchmal nennen wir dieses Komma auch Trennzeichen. Beachten Sie, dass dieses Format seinen Namen von der Verwendung des Kommas als Feldtrennzeichen erhält. CSV-Dateien sind aufgrund ihrer Kompatibilität mit vielen Programmen, Datenbanken, Tabellenkalkulationen und Textverarbeitungsprogrammen weit verbreitet.

Lassen Sie uns nun eine CSV-Datei mit der oben beschriebenen Dateistruktur erstellen. Nach dem Erstellen der Datei lesen wir die CSV-Datei Zeile für Zeile mit verschiedenen Funktionen.

Wir können eine CSV-Datei mit einer Tabelle in Microsoft Excel erstellen. Wenn Sie Microsoft Excel jedoch nicht auf Ihrem System installiert haben, können Sie Notepad oder andere Texteditoren verwenden, um eine CSV-Datei zu erstellen.

Dazu können wir die Dateiendung auf .csv ändern. Vergessen Sie auch nicht, dem Format einer CSV-Datei zu folgen. Hier sind alle Schritte, die wir ausführen müssen.

  • Öffnen Sie einen Texteditor und schreiben Sie den Inhalt im richtigen CSV-Format. Die Kopfzeilen sowie die Datensätze sind durch Kommas getrennt. Jeder Datensatz beginnt in einer neuen Zeile. Dies ist unten dargestellt:

    Roll Number,Name,Subject
    1,Harry Potter,Magical Creatures
    2,Ron Weasley,Divination
    3,Hermione Granger,Dark arts
    

Speichern Sie diese Datei als Demo.csv. Die CSV-Datei wird erfolgreich erstellt.

Wir können die Funktion open() verwenden, um die CSV-Datei in Python zu öffnen. Wir ziehen es jedoch vor, das ausschließlich für diesen Zweck erstellte Python-CSV-Modul zu verwenden. Um das CSV-Modul zu verwenden, müssen wir es zuerst importieren.

import csv

Zur Demonstration verwenden wir die Datei Demo.csv, die wir bereits erstellt haben. Die Datei sieht wie folgt aus:

Roll Number,Name,Subject
1,Harry Potter,Magical Creatures
2,Ron Weasely,Divination
3,Hermione Granger,Dark arts

Um den Inhalt dieser CSV-Datei Zeile für Zeile in Python zu lesen, verwenden wir das csv-Modul, das außerdem zwei Klassen bereitstellt. Diese Klassen sind csv.reader und csv.DictReader.

Sehen wir uns diese Klassen eine nach der anderen an.

Lesen einer CSV-Datei Zeile für Zeile mit csv.reader in Python

Die Klasse csv.reader des csv-Moduls ermöglicht es uns, die Zeilen einer CSV-Datei als Werteliste zu lesen und zu iterieren. Sehen Sie sich das folgende Beispiel an:

from csv import reader

# open file
with open("Demo.csv", "r") as my_file:
    # pass the file object to reader()
    file_reader = reader(my_file)
    # do this for all the rows
    for i in file_reader:
        # print the rows
        print(i)

Wir verwenden das Reader-Objekt, um über die Zeilen der Datei Demo.csv zu iterieren. Das Reader-Objekt fungiert als Iterator. Dadurch wird sichergestellt, dass immer nur eine Zeile im Speicher bleibt.

Ausgabe:

['Roll Number', 'Name', 'Subject']
['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

Schauen wir uns die hier verwendeten Funktionen an.

Pythons Funktion open() wird verwendet, um eine Datei zu öffnen. Sobald es eine Datei öffnet, gibt es ein Dateiobjekt zurück.

Syntax:

open(file_name, mode)

Der Parameter mode gibt den Modus an, in dem wir die Datei öffnen wollen. Es kann lesen, anhängen, schreiben oder erstellen sein.

Die Funktion reader() dient zum Lesen einer Datei. Es gibt ein iterierbares Reader-Objekt zurück. Im obigen Beispiel ist dieses iterierbare Objekt file_reader, was durch die Verwendung der for-Schleife klar sein muss.

Im obigen Beispiel werden auch die Kopfzeilen gedruckt. Wir können auch eine CSV-Datei ohne Kopfzeile drucken. Sehen Sie sich das folgende Beispiel an:

from csv import reader

# skip the first line(the header)
with open("Demo.csv", "r") as my_file:
    file_csv = reader(my_file)
    head = next(file_csv)

    # check if the file is empty or not
    if head is not None:
        # Iterate over each row
        for i in file_csv:
            # print the rows
            print(i)

Ausgabe:

['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

Hier werden die Kopfzeilen nicht gedruckt. Dieser Ansatz funktioniert ähnlich wie der vorherige Ansatz, außer dass wir die erste Zeile während der Iteration überspringen. Wir haben die Funktion next() verwendet, um den Header zu überspringen.

Die Funktion next() in Python gibt das nächste Element zurück, das in einem Iterator vorhanden ist. Seine Syntax wird unten beschrieben.

Syntax:

next(iterable_object / iterable, default)

Iterable oder iterable object ist die Menge von Werten, durch die wir iterieren müssen. default ist ein optionaler Parameter, der von der Iterable zurückgegeben wird, wenn sie ihr Ende erreicht.

Lesen einer CSV-Datei Zeile für Zeile mit dem Objekt DictReader in Python

csv.reader liest und druckt die CSV-Datei als Liste.

Das Objekt DictReader iteriert jedoch als Dictionary über die Zeilen der CSV-Datei. So wie csv.reader jede Zeile als Liste zurückgibt, gibt ObjectReader jede Zeile als Dictionary zurück.

Sehen Sie sich das folgende Beispiel an:

from csv import DictReader

# open the file
with open("Demo.csv", "r") as my_file:
    # passing file object to DictReader()
    csv_dict_reader = DictReader(my_file)

    # iterating over each row
    for i in csv_dict_reader:
        # print the values
        print(i)

Ausgabe:

{'Roll Number': '1', 'Name': 'Harry Potter', 'Subject': 'Magical Creatures'}
{'Roll Number': '2', 'Name': 'Ron Weasley', 'Subject': 'Divinition'}
{'Roll Number': '3', 'Name': 'Hermione Granger', 'Subject': 'Dark arts'}

Die Funktion DictReader ähnelt der Funktion reader, abgesehen davon, wie sie die Informationen zurückgibt. Es bildet die Werte ab und gibt sie als dictionary zurück, wobei die Feldnamen als Schlüssel des Wörterbuchs fungieren und die Werte aus den Daten in einer bestimmten Zeile bestehen.

Fazit

In diesem Artikel haben wir die Grundlagen von CSV besprochen. Wir haben auch die beiden Möglichkeiten gesehen, eine CSV-Datei zeilenweise in Python zu lesen. Wir haben auch gesehen, wie wir mit einem Texteditor wie Notepad selbst eine CSV-Datei erstellen können.

Verwandter Artikel - Python CSV

Verwandter Artikel - Python File