Ouvrez ou collez un fichier CSV : chaque ligne devient un élément d’une liste YAML, avec les en-têtes pour clés. Par défaut, chaque valeur reste du texte, et les valeurs qu’un analyseur YAML réinterpréterait sinon — NO, yes, 0150, 2024-03-01, null — sont mises entre guillemets pour être relues exactement telles qu’elles sont écrites. La conversion a lieu dans votre navigateur, sans jamais envoyer le fichier.
Convertir un CSV en YAML, étape par étape
- Cliquez sur Ouvrir un fichier, déposez un fichier
.csv,.tsvou.txtsur l’outil, ou choisissez Coller. Si les clés semblent fausses, vérifiez le séparateur et l’encodage dans Paramètres d’importation. - Choisissez les Types de valeurs et la façon d’écrire les Cellules vides. L’onglet YAML montre le texte exact que contiendra le téléchargement.
- Choisissez l’Indentation, puis Copier ou Télécharger en YAML.
Le résultat est une séquence de premier niveau (éléments - key: value), la structure utilisée pour les jeux de test, les données d’amorçage et les fichiers de données des sites statiques. S’il vous faut plutôt du JSON, CSV en JSON propose les mêmes options de types.
Ce que fait chaque option
| Tout garder en texte | Le réglage par défaut. Chaque valeur est une chaîne YAML ; des guillemets ne sont ajoutés que là où un scalaire simple serait lu autrement. |
|---|---|
| Détecter les nombres et true/false | Une colonne ne devient des nombres YAML que si toutes ses valeurs non vides sont des nombres simples, sans zéro initial et avec 15 chiffres significatifs au plus ; les colonnes true/false (quelle que soit la casse) deviennent des booléens. yes/no et les dates restent des chaînes entre guillemets. Les nombres sont écrits sous forme canonique : 1.50 devient 1.5. |
| Cellules vides | null (par défaut) écrit key: null ; Texte vide "" écrit key: "" ; Omettre la clé retire cette clé de la ligne. |
| Indentation | 2 espaces (par défaut) ou 4 espaces pour les clés de chaque élément de la liste. |
Comment les valeurs ambiguës sont mises entre guillemets
Le résultat est écrit pour être relu à l’identique par les analyseurs YAML 1.2 comme par les analyseurs YAML 1.1 plus anciens, tel PyYAML, qui considèrent davantage de mots comme des booléens et des nombres.
- Codes de pays et réponses :
NO,yes,off,yetonsont entre guillemets, pour que le code de la Norvège ne soit pas chargé commefalse. Cela vaut aussi pour les clés ("on": x). - Zéros initiaux :
0150et08001sont entre guillemets ; sans guillemets, YAML 1.1 les lit comme des nombres octaux ou décimaux et supprime le zéro. - Dates et nombres en mode texte :
2019-04-01et12sont entre guillemets pour ne pas être chargés comme un horodatage ou un entier. - Texte qui ressemble à une valeur nulle : une cellule contenant
nullou~est mise entre guillemets ; elle reste le texte que vous avez écrit et ne se confond pas avec une cellule vide. - Les sauts de ligne dans une valeur donnent un bloc littéral
|-, et un texte contenant:ou#est mis entre guillemets. Les lignes longues ne sont jamais repliées. - Les en-têtes servent de clés exactement tels qu’ils sont écrits, espaces et écritures non latines compris. Un en-tête vide devient
Column 3et un en-tête répéténame (2).
En cas de problème
- Une colonne de nombres est restée entre guillemets malgré la détection des nombres. Au moins une valeur n’est pas un nombre simple, par exemple
1,5,12 kgou007. Retrouvez-la dans le lecteur CSV. - Une colonne oui/non n’est pas devenue booléenne. Seuls
trueetfalsesont convertis, caryes,noetonne désignent des booléens qu’en YAML 1.1. Remplacez-les d’abord dans le CSV dans l’Éditeur CSV s’il vous faut des booléens. - Les clés contiennent des caractères étranges comme é. Le fichier n’est pas en UTF-8. Choisissez son encodage dans les paramètres d’importation.
- Tout se retrouve sous une seule clé. Le séparateur a été mal deviné ; réglez-le dans les paramètres d’importation.
Limites et confidentialité
Les fichiers jusqu’à 25 Mo, 100 000 lignes ou 2 millions de cellules s’ouvrent avec un aperçu en direct des 200 premières lignes. Les fichiers plus gros sont convertis en flux : le fichier est lu deux fois par morceaux (une fois pour mesurer les colonnes et leurs types, une fois pour écrire), un avertissement précise que le téléchargement couvre tout le fichier, et Copier n’est pas proposé. Un fichier produit est plafonné à 4 Go.
La conversion s’exécute dans un worker en arrière-plan, dans cet onglet : la page reste réactive et Annuler l’interrompt. Le CSV n’est jamais envoyé sur un serveur.
Exemple
Une liste de clients avec des codes de pays, des codes postaux à zéros initiaux, des indicateurs oui/non, des dates et des cellules vides, convertie avec les réglages par défaut (tout en texte, cellules vides en null). Avec Détecter les nombres et true/false, seule la colonne orders change et devient 12, 3 et 7.
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
Questions fréquentes
Pourquoi `NO` est-il entre guillemets ?
En YAML 1.1, NO, no, off et n sans guillemets signifient faux. Les guillemets gardent en texte, dans tous les analyseurs, un code de pays norvégien ou toute réponse écrite no.
Puis-je obtenir un dictionnaire indexé par identifiant au lieu d’une liste ?
Non. Chaque ligne du CSV est écrite comme un élément de liste, dans l’ordre du fichier. Une sortie indexée par clé n’est pas proposée ici.
Le résultat est-il du YAML 1.2 valide ?
Oui. Les guillemets supplémentaires nécessaires pour YAML 1.1 restent du YAML 1.2 valide ; ils ne font que rendre explicites des valeurs qui étaient déjà des chaînes.