Aller au contenu principal
U/
Parsing
polyglotte

Parser un CSV avec guillemets et virgules échappées

Implémenter un parser CSV respectant un sous-ensemble de la RFC 4180 : champs entre guillemets, virgules internes, guillemets doublés comme séquence d'échappement.

75 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

Énoncé

Le programme lit un fichier CSV sur l'entrée standard (une ligne par enregistrement). Chaque champ peut être non guillemété (sans virgule ni guillemet) ou guillemété (entre "). Dans un champ guillemété, une virgule est un caractère ordinaire et deux guillemets consécutifs "" représentent un guillemet littéral. Pour chaque enregistrement, le programme affiche le nombre de champs, puis chaque champ sur sa propre ligne, préfixé de son index (0-based) et du caractère |.

Contraintes

  • Chaque ligne fait au plus 4 096 caractères.
  • L'entrée contient au plus 1 000 lignes.
  • Les champs non guillemétés ne contiennent ni " ni ,.
  • Les fins de ligne à l'intérieur d'un champ guillemété ne sont pas gérées (sous-ensemble de la RFC).
  • Solution réalisable dans tout langage généraliste avec sa seule bibliothèque standard.

Exemple

Entrée :
Alice,30,Paris
"Bob, Jr.",25,"New ""York"""

Sortie :
3 champs
0|Alice
1|30
2|Paris
3 champs
0|Bob, Jr.
1|25
2|New "York"
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.