Utiliser un séparateur personnalisé dans un fichier CSV en Python

1. À propos des séparateurs dans les fichiers CSV

Dans un fichier CSV, les différentes valeurs d'une ligne sont séparées par un caractère appelé séparateur ou délimiteur. Malgré le nom CSV, qui signifie Comma-Separated Values, la virgule n'est pas le seul séparateur possible.

On rencontre fréquemment la virgule, le point-virgule, la tabulation ou encore le caractère |. Avec le module csv de Python, le paramètre delimiter permet d'indiquer le séparateur utilisé.

Le fichier suivant utilise la virgule comme séparateur classique.

Sortie :

Le même ensemble de données peut être enregistré avec un point-virgule comme séparateur.

Sortie :

Pour lire correctement ce deuxième fichier, il faut informer le module csv que le séparateur utilisé est le point-virgule.

2. Lire un fichier CSV avec un séparateur personnalisé

La fonction csv.reader() accepte le paramètre delimiter. Pour lire un fichier utilisant le point-virgule, on utilise delimiter=";".

Supposons que le fichier etudiants.csv utilise le point-virgule. Le programme suivant lit correctement chaque colonne.

Sortie :

Une fois le séparateur correctement indiqué, les colonnes peuvent être récupérées par leur indice comme avec n'importe quel autre fichier CSV.

Sortie :

Utiliser une tabulation comme séparateur

Pour lire un fichier dont les colonnes sont séparées par des tabulations, on utilise le caractère spécial \t comme valeur de delimiter.

Sortie :

3. Écrire un fichier CSV avec un séparateur personnalisé

Le paramètre delimiter fonctionne également avec csv.writer(). Il permet de choisir le caractère qui séparera les différentes valeurs lors de l'écriture du fichier.

Le programme suivant crée un fichier CSV utilisant le point-virgule comme séparateur.

Sortie :

Le fichier créé utilise alors un point-virgule entre chaque valeur.

Sortie :

Utiliser le caractère | comme séparateur

Il est également possible d'utiliser le caractère | comme délimiteur. Il suffit de fournir ce caractère au paramètre delimiter.

Sortie :

Le contenu du fichier langages.csv obtenu est alors le suivant.

Sortie :

4. Utiliser différents séparateurs avec DictReader et DictWriter

Le paramètre delimiter peut également être utilisé avec csv.DictReader() et csv.DictWriter(). Ces classes sont particulièrement pratiques lorsque le fichier possède une ligne d'en-tête.

Lire avec DictReader

Supposons que le fichier etudiants.csv utilise le point-virgule. Le programme suivant permet d'accéder directement aux colonnes "nom", "age" et "ville".

Sortie :

Écrire avec DictWriter

Pour écrire des dictionnaires dans un fichier utilisant un séparateur personnalisé, on transmet également delimiter à csv.DictWriter(). Le programme suivant crée un fichier séparé par des points-virgules.

Sortie :

Le fichier généré possède alors le contenu suivant.

Sortie :

Convertir un fichier d'un séparateur vers un autre

Le module csv permet facilement de convertir un fichier utilisant un point-virgule en un nouveau fichier utilisant une virgule. Il suffit d'utiliser des délimiteurs différents pour la lecture et l'écriture.

Sortie :

5. Détecter automatiquement le séparateur d'un fichier CSV

Il arrive que le séparateur utilisé dans un fichier soit inconnu. Le module csv fournit la classe csv.Sniffer, capable d'analyser un échantillon du fichier et d'essayer d'en déterminer le format.

La méthode sniff() retourne un dialecte dont l'attribut delimiter contient le séparateur détecté. Dans l'exemple suivant, le fichier contient des points-virgules.

Sortie :

Pour un fichier réel, on peut lire un échantillon de son contenu, détecter le séparateur, revenir au début avec seek(0), puis utiliser le dialecte détecté avec csv.reader().

Sortie :

La détection avec csv.Sniffer est pratique, mais elle repose sur l'analyse d'un échantillon. Pour un format connu à l'avance, il est généralement préférable d'indiquer explicitement le séparateur avec delimiter.

6. À retenir !

Le module csv permet de travailler avec des fichiers utilisant différents séparateurs. Le paramètre delimiter permet de préciser le caractère utilisé pour séparer les différentes colonnes.

  • La virgule est le séparateur CSV classique, mais elle n'est pas obligatoire.
  • Le point-virgule est fréquemment utilisé comme séparateur dans les fichiers CSV.
  • Le paramètre delimiter=";" permet de travailler avec un fichier séparé par des points-virgules.
  • Le paramètre delimiter="\t" permet de travailler avec des valeurs séparées par des tabulations.
  • Le caractère | peut également être utilisé comme séparateur.
  • csv.reader() accepte le paramètre delimiter lors de la lecture.
  • csv.writer() accepte le paramètre delimiter lors de l'écriture.
  • csv.DictReader() et csv.DictWriter() acceptent également un séparateur personnalisé.
  • csv.Sniffer().sniff() peut tenter de détecter automatiquement le format et le séparateur d'un fichier.
  • Lorsque le séparateur est connu, il est préférable de le préciser explicitement.

Le programme suivant résume l'utilisation d'un séparateur personnalisé en lisant un fichier utilisant le point-virgule puis en créant un nouveau fichier utilisant la virgule.

Sortie :

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *