Lesen CSV Zeile für Zeile in Python
- Dateistruktur einer CSV-Datei
-
Lesen einer CSV-Datei Zeile für Zeile mit
csv.reader
in Python -
Lesen einer CSV-Datei Zeile für Zeile mit dem Objekt
DictReader
in Python - Fazit
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
- Importieren Sie mehrere CSV-Dateien in Pandas und verketten Sie sie zu einem DataFrame
- Python teilt CSV in mehrere Dateien auf
- Vergleichen Sie zwei CSV-Dateien und drucken Sie Unterschiede mit Python
- Konvertieren XML in CSV mit Python
- Python Schreiben in CSV Zeile für Zeile
Verwandter Artikel - Python File
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie man in Python Text an eine Datei anhängt
- Wie man prüft, ob eine Datei in Python existiert
- Wie man Dateien mit einer bestimmten Endung nur in Python findet
- Wie man bestimmte Zeilen aus einer Datei in Python liest
- Dateiberechtigungen in Python ändern