Lecture des données CSV dans des objets personnalisés
Lorsque vous travaillez avec des fichiers CSV en Python, il est souvent souhaitable de lire les données dans des objets personnalisés plutôt que de travailler avec des structures de données brutes telles que des listes ou des dictionnaires. Cette approche vous permet d'encapsuler les données et la logique associée dans vos propres classes, rendant le code plus organisé, plus facilement maintenable et plus facile à utiliser.
Pour lire les données CSV dans des objets personnalisés, vous pouvez utiliser le module intégré csv
de Python, ainsi que le concept de classes de données (introduit en Python 3.7) ou des classes ordinaires.
Utilisation des classes de données
Les classes de données de Python offrent un moyen pratique de définir des objets personnalisés et de générer automatiquement le code répétitif, tels que les méthodes __init__()
, __repr__()
et __eq__()
. Voici un exemple de comment utiliser les classes de données pour lire des données CSV :
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)
Dans cet exemple, la classe Person
est définie à l'aide du décorateur @dataclass
, qui génère automatiquement les méthodes nécessaires. Le csv.DictReader
est utilisé pour lire les données CSV dans un dictionnaire, puis chaque ligne est utilisée pour créer un objet Person
.
Utilisation de classes ordinaires
Alternativement, vous pouvez utiliser des classes Python ordinaires pour obtenir le même résultat :
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)
Dans cet exemple, la classe Person
est définie manuellement, avec une méthode __init__()
pour initialiser les attributs de l'objet et une méthode __repr__()
pour fournir une représentation sous forme de chaîne de caractères de l'objet.
Les deux approches vous permettent de travailler avec les données CSV de manière plus structurée et orientée objet, facilitant ainsi la gestion et la manipulation des données dans votre application Python.