Convertisseur CSV en YAML

YAML est ce dont sont faits les fichiers de configuration modernes : manifestes Kubernetes, workflows GitHub Actions, Docker Compose, playbooks Ansible, fixtures Rails. Ce convertisseur lit un CSV et produit une séquence YAML où chaque ligne devient un mappage dont les clés proviennent de la ligne d’en-tête. La sortie utilise une indentation de deux espaces et un seuil en ligne de 4 niveaux, ce qui correspond au style de la plupart des éditeurs et des linters.

Comment le CSV devient YAML

  1. 1

    Collez le CSV

    Un exemple est préchargé pour que vous puissiez voir la forme de sortie par défaut ; remplacez-le par vos données.

  2. 2

    Choisissez le délimiteur

    Virgule par défaut. Entrez `\t` pour une entrée séparée par des tabulations ou tout autre caractère unique utilisé par votre fichier.

  3. 3

    Les en-têtes deviennent des clés

    La ligne 1 est traitée comme l'en-tête. Les lignes de données deviennent des mappages sous ces clés dans le même ordre que les colonnes source.

  4. 4

    YAML déversé en toute sécurité

    La sortie est rendue par le composant YAML de Symfony, qui met entre guillemets les valeurs lorsque l'ambiguïté avec les booléens, les nombres ou les dates pourrait autrement se produire.

Les particularités de YAML que vous devriez connaître avant de coller la sortie

YAML est célèbre pour sa tolérance en surface et plein de pièges en dessous. Le dumper gère la plupart d’entre eux, mais vos données doivent encore survivre au round-tripping.

Le problème de la Norvège et ses amis

YAML 1.1 traite un no, yes, on, off, true, false, y, n (et leurs formes capitalisées) comme des booléens. Cela signifie qu’une colonne de code pays avec NO pour la Norvège peut silencieusement se transformer en false.

Cellule source Émis comme (non cité) Généralement destiné à
NO false Le pays Norvège
ON true L’état Ontario
123 123 Soit un nombre soit un ID
0100 64 (octal !) Un code avec zéro initial

Le dumper met automatiquement entre guillemets les valeurs risquées, mais si vous voyez des types incorrects dans votre sortie, passez à des parseurs YAML 1.2 en aval ou mettez explicitement entre guillemets les valeurs qui vous importent.

Choix de formatage

  • Indentation de deux espaces. Standard pour la plupart des éditeurs ; les linters comme yamllint l’utilisent par défaut.
  • Seuil en ligne 4. Les structures profondément imbriquées s’impriment sur une ligne en dessous du 4ème niveau, au-dessus elles s’étendent sur plusieurs lignes. Ajustez en aval si vous souhaitez des blocs plus stricts.
  • Les ancres et les alias ne sont pas générés. Chaque ligne est un nouveau mappage même si les lignes se répètent.

Exemple de sortie

- name: Alice
  age: 30
- name: Bob
  age: 25

Quand choisir YAML plutôt que JSON

  • Configurations modifiées à la main, où les commentaires et les chaînes multi-lignes comptent.
  • Manifestes Kubernetes, pipelines CI, playbooks Ansible.
  • Tout contexte où les gens liront le fichier autant que les machines.

Sinon, JSON est plus strict et plus rapide à analyser, préférez-le pour les formats de transmission et les charges utiles générées.

Questions fréquentes

YAML 1.1 interprète un NO nu comme un booléen. Le convertisseur met entre guillemets les valeurs risquées, mais si un parseur en aval contraint toujours les types, mettez entre guillemets les cellules problématiques avant de coller la sortie ou passez à un parseur YAML 1.2 qui les traite comme des chaînes simples.

Pas avec ce convertisseur, chaque ligne devient un mappage plat. Pour du YAML imbriqué, construisez un petit script autour d’une bibliothèque YAML, ou convertissez d’abord en JSON et façonnez-le dans un éditeur JSON.

Les cellules sont analysées avec str_getcsv en utilisant votre délimiteur choisi. Les valeurs citées préservent les délimiteurs et les guillemets intégrés de la même manière qu’elles le feraient dans un vrai parseur CSV.

Oui. Le CSV que vous collez est envoyé à notre serveur, car l’analyse et la sérialisation YAML s’y déroulent. Il sert uniquement à produire le résultat YAML et n’est pas conservé.

Outils similaires

Outil disponible dans d’autres langues