Définition
‘CSV’ signifie : ‘Coma Separated Values’, soit valeurs séparées par des virgules.
La définition du format csv figure dans une RFC (Request for Comments) : RFC 4180
Caractéristiques
Un fichier au format ‘csv’ est d’abord un fichier de type ‘texte’.
Mais ce qui le caractérise c’est qu’il permet de sauvegarder les données d’une table.
Chaque enregistrement d’une table sera sauvegardée sous la forme d’une ligne de ‘texte’.
Quel caractère de fin de ligne ?
L’encodage d’un caractère de fin de ligne (de retour à la ligne) et son écriture dans un langage de programmation dépendent du système d’exploitation :
OS (système d’exploitation) | Caractère | Encodage ASCII | Encodage Unicode | Dans la plupart des langages de programmation… |
---|---|---|---|---|
UNIX / Linux | CR (Carriage Return) | (0D)16 (13)10 | 000D | \r |
MacOS | LF (Line Feed) | (0A)16 (10)10 | 000A | \n |
DOS/Windows | CRLF (Carriage Return Line Feed) | 0D 0A (13)10 (10)10 | 000D 000A | \r\n |
Quel caractère de séparation des données ?
Les valeurs d’un enregistrement sont séparées les unes des autres par une virgule – caractère par défaut – mais parfois par un point-virgule ou par un caractère de tabulation-droite : dans ce dernier cas le format de fichier est souvent nommé ‘TSV‘ (Tab Separated Values).
Soit la table suivante :
Prénom | NOM | Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD) |
---|---|---|
Abel | Auboisdormant | 2002-12-10 |
Alain | Provist | 2004-01-14 |
André | Naline | 2003-04-05 |
Céline | Évitable | 1997-06-23 |
Les données de cette table seront sauvegardées de cette façon dans un fichier ‘csv’ avec un OS ©MS-Windows :
'Prénom,NOM,Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD)\r\nAbel,Auboisdormant,2002-12-10\r\nAlain,Provist,2004-01-14\r\nAndré,Naline,2003-04-05\r\nCéline,Évitable,1997-06-23'
Tester…
Dans la console Python…
Copier le texte ci-dessus et dans une console Python entrer et valider l’instruction suivante :
print('Prénom,NOM,Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD)\r\nAbel,Auboisdormant,2002-12-10\r\nAlain,Provist,2004-01-14\r\nAndré,Naline,2003-04-05\r\nCéline,Évitable,1997-06-23')
Dans le « Bloc-notes » de (c)MS Windows…
Ouvrir le 'bloc-notes' ©MS-Windows. Copier le texte qui suit :
Prénom,NOM,Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD)
Abel,Auboisdormant,2002-12-10
Alain,Provist,2004-01-14
André,Naline,2003-04-05
Céline,Évitable,1997-06-23
Coller le texte dans le 'bloc-notes'. Sauvegarder sur le bureau le document avec le nom 'test.csv'. Sur le bureau, faire un clic droit sur le fichier 'test.csv' et sélectionner la commande 'ouvrir avec...' et choisir 'libre office calc'. Décrire ce que se passe. Faire des captures d'écran.
Quelques cas particuliers…
Données manquantes
Si une donnée est manquante et en l’absence de valeurs par défaut, il convient de mettre alors deux virgules successives :
Prénom | NOM | Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD) |
---|---|---|
Abel | Auboisdormant | 2002-12-10 |
Alain | Provist | 2004-01-14 |
André | Naline | 2003-04-05 |
Céline | Évitable | 1997-06-23 |
Colette | 2001-11-03 |
La sauvegarde sera :
Prénom,NOM,Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD)
Abel,Auboisdormant,2002-12-10
Alain,Provist,2004-01-14
André,Naline,2003-04-05
Céline,Évitable,1997-06-23
Colette,,2001-11-03
Données contenant une virgule…
Le choix du caractère utilisé comme séparateur peut dépendre du contenu des données.
Par exemple dans le cas suivant :
Prénom | NOM | Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD) | Lieu de naissance (Département et Ville) |
---|---|---|---|
Abel | Auboisdormant | 2002-12-10 | Maine-et-Loire, Angers |
Alain | Provist | 2004-01-14 | Mayenne, Laval |
André | Naline | 2003-04-05 | Sarthe, Le Mans |
Céline | Évitable | 1997-06-23 | Loire-Atlantique, Nantes |
Colette | 2001-11-03 | Vendée |
Il est plutôt pertinent de choisir le point-virgule comme caractère de séparation.
Prénom;NOM;Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD);Lieu de naissance (Département et Ville)
Abel;Auboisdormant;2002-12-10;Maine-et-Loire, Angers
Alain;Provist;2004-01-14;Mayenne, Laval
André;Naline;2003-04-05;Sarthe, Le Mans
Céline;Évitable;1997-06-23;Loire-Atlantique, Nantes
Colette;;2001-11-03;Vendée
S’entraîner…
Sujet 1 - Sérialisation - Soit une table implémentée sous la forme d'une liste de listes en Python. Écrire un programme qui permet de convertir cette liste de liste sous la forme d'une chaîne de caractères au format 'csv'.Coups de pouce…
Sujet 2 - Désérialisation - Soit une chaîne de caractères formatées aux normes 'csv'. Écrire un programme en Python qui permet de convertir cette chaîne de caractères en liste de listes.Coups de pouce…