Einlesen von CSV-Daten in benutzerdefinierte Objekte
Wenn Sie in Python mit CSV-Dateien arbeiten, ist es oft wünschenswert, die Daten in benutzerdefinierte Objekte einzulesen, anstatt mit rohen Datenstrukturen wie Listen oder Wörterbüchern zu arbeiten. Dieser Ansatz ermöglicht es Ihnen, die Daten und die zugehörige Logik in Ihren eigenen Klassen zu kapseln, wodurch der Code besser organisiert, wartbar und einfacher zu handhaben wird.
Um CSV-Daten in benutzerdefinierte Objekte einzulesen, können Sie das eingebaute csv-Modul in Python zusammen mit dem Konzept von Datenklassen (eingeführt in Python 3.7) oder regulären Klassen verwenden.
Die Verwendung von Datenklassen
Python-Datenklassen bieten eine bequeme Möglichkeit, benutzerdefinierte Objekte zu definieren und Boilerplate-Code wie die Methoden __init__(), __repr__() und __eq__() automatisch zu generieren. Hier ist ein Beispiel, wie Sie Datenklassen verwenden können, um CSV-Daten einzulesen:
from dataclasses import dataclass
import csv
@dataclass
class Person:
name: str
age: int
city: str
with open('people.csv', 'r') as file:
reader = csv.DictReader(file)
people = [Person(**row) for row in reader]
for person in people:
print(person)
In diesem Beispiel wird die Person-Klasse mit dem @dataclass-Decorator definiert, der die erforderlichen Methoden automatisch generiert. Der csv.DictReader wird verwendet, um die CSV-Daten in ein Wörterbuch einzulesen, und dann wird jede Zeile verwendet, um ein Person-Objekt zu erstellen.
Die Verwendung von regulären Klassen
Alternativ können Sie reguläre Python-Klassen verwenden, um dasselbe Ergebnis zu erzielen:
import csv
class Person:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def __repr__(self):
return f"Person(name='{self.name}', age={self.age}, city='{self.city}')"
with open('people.csv', 'r') as file:
reader = csv.reader(file)
next(reader) ## Skip the header row
people = [Person(*row) for row in reader]
for person in people:
print(person)
In diesem Beispiel wird die Person-Klasse manuell definiert, mit einer __init__()-Methode, um die Attribute des Objekts zu initialisieren, und einer __repr__()-Methode, um eine Zeichenfolgendarstellung des Objekts bereitzustellen.
Beide Ansätze ermöglichen es Ihnen, mit den CSV-Daten auf eine strukturierte und objektorientierte Weise zu arbeiten, was es einfacher macht, die Daten in Ihrer Python-Anwendung zu verwalten und zu manipulieren.