CSV signifie Comma Separated Values, autrement dit des valeurs séparées par des virgules.
Plus clairement, un fichier CSV est un fichier texte mais dont le contenu est organisé sous forme de tableur (comme ceux que l'on obtient avec LibreOffice Calc ou Microsoft Excel) : les lignes du tableau sont les lignes du fichier et les champs de chaque colonne sont séparés par des virgules.
Prenons, par exemple, le tableau suivant (un carnet de contacts qui nous servira d'exemple tout au long de cette partie) :
Nom | Prénom | Téléphone |
---|---|---|
DOE | John | 0610101010 |
TURING | Alan | 0611111111 |
RITCHIE | Dennis | 0612121212 |
Si on l'exporte au format CSV, on obtiendra le fichier texte suivant :
Nom,Prénom,Téléphone
DOE,John,0610101010
TURING,Alan,0611111111
RITCHIE,Dennis,0612121212
De nombreuses applications (les tableurs, les logiciels de comptabilité, Pronote pour les listes d'élèves) permettent un export des données au format CSV.
L'intérêt du format CSV par rapport à un fichier texte classique est que les données y sont rangées, ordonnées, comme dans un tableau. Ce n'est pas le cas dans un fichier texte classique.
Autre intérêt : de nombreux sites mettent en ligne des fichiers de données comme par exemple les données de recensement d'une ville.
Cela peut être intéressant de savoir les manipuler.
Un exemple "étonnant" de fichier CSV à voir ici. Il recense des information sur les passagers du Titanic.
# importation du module CSV de Python
import csv
# Données à stocker dans le fichier (sous forme d'une liste de tuples)
data =[("Nom","Prénom","Téléphone"),("DOE","John", "0610101010"),("TURING", "Alan", "0611111111"),
("RITCHIE","Dennis","0613131313")
]
# Ouvrir le fichier en mode écriture
fichiercsv = open('data.csv','w')
# Créer l'objet fichier
objet = csv.writer(fichiercsv)
# Chaque élément de data correspond à une ligne
for element in data:
objet.writerow(element)
fichiercsv.close()
Comprendre le programme :
Attention, s'il existe déjà, tout son contenu sera effacé !
# Lire le fichier avec reader de csv
with open('data.csv', 'r') as fichiercsv:
reader = csv.reader(fichiercsv , delimiter=',')
for row in reader:
print(row)
fichiercsv.close()
Comprendre le programme :
# Ecrire dans un fichier CSV avec writer
with open('data.csv','a',newline='') as fichier:
writer = csv.writer(fichier)
writer.writerow(['VAN ROSSUM','Guido', '0614141414'])
fichiercsv.close()
# Lire le fichier avec reader de csv
with open('data.csv', 'r') as fichier:
reader = csv.reader(fichier , delimiter=',')
for row in reader:
print(row)
fichiercsv.close()
Comprendre le programme :
## importation du module CSV de Python
import csv
# Données à stocker dans le fichier (sous forme de dictionnaire, cette fois)
data =[{"Nom" : "DOE","Prénom" : "John", "Téléphone" : "0610101010"},
{"Nom" : "TURING", "Prénom" : "Alan", "Téléphone" : "0611111111"},
{"Nom" : "RITCHIE","Prénom" : "Dennis", "Téléphone": "0613131313"}
]
# création du fichier
with open('data2.csv', 'w', newline='') as fichiercsv:
# détermination des noms des champs du tableau (entêtes)
fieldnames = ['Nom', 'Prénom','Téléphone']
# création de l'objet avec les noms des champs
writer = csv.DictWriter(fichiercsv, fieldnames=fieldnames)
# écriture de la ligne avec les entêtes en utilisant la méthode writerheader()
writer.writeheader()
# écriture des autres lignes avec le contenu de data en utilisant la méthode writerow()
for element in data:
writer.writerow(element)
# fermeture du fichier
fichiercsv.close()
# Lecture (même fonctionnement qu'avec la classe reader de csv sauf que l'on renvoie un dictionnaire)
with open('data2.csv', newline='') as fichiercsv:
reader = csv.DictReader(fichiercsv)
for row in reader:
print(row)
fichiercsv.close()
# recherche d'un élément dans le dictionnaire
with open('data2.csv', newline = '') as fichiercsv:
reader = csv.DictReader(fichiercsv)
for row in reader:
if row["Nom"] == "DOE":
print(row["Nom"], " : ", row["Téléphone"])
fichiercsv.close()
Comprendre le programme :