Aller directement à l’outil
ViewCSV
Aucun envoi de fichier

Convertir un CSV en YAML

orders.csv· DONNÉES D’EXEMPLE15 lignes · 8 colonnes
Types de valeurs
Les textes qui ressemblent à des nombres, à true/false ou à des dates sont mis entre guillemets, pour être relus comme le même texte.
- order_id: "001041"
  customer: Emma Moreau
  city: Montréal
  product: Chair, ergonomic
  quantity: "5"
  unit_price: "111.68"
  order_date: "2026-01-10"
  status: pending
- order_id: "001042"
  customer: Ambre Laurent
  city: Bordeaux
  product: Notebook A5
  quantity: "9"
  unit_price: "176.23"
  order_date: "2026-02-26"
  status: pending
- order_id: "001043"
  customer: Gabriel Durand
  city: Toulouse
  product: Notebook A5
  quantity: "4"
  unit_price: "199.26"
  order_date: "2026-03-01"
  status: paid
- order_id: "001044"
  customer: Jules Thomas
  city: Bordeaux
  product: Monitor 27"
  quantity: "2"
  unit_price: "143.23"
  order_date: "2026-04-25"
  status: paid
- order_id: "001045"
  customer: Louise Martin
  city: Montréal
  product: Notebook A5
  quantity: "1"
  unit_price: null
  order_date: "2026-05-25"
  status: refunded
- order_id: "001046"
  customer: Jade Martin
  city: Montréal
  product: Monitor 27"
  quantity: "4"
  unit_price: "179.75"
  order_date: "2026-06-03"
  status: shipped
- order_id: "001047"
  customer: " Ambre Petit "
  city: Paris
  product: Chair, ergonomic
  quantity: "1"
  unit_price: "186.03"
  order_date: "2026-07-08"
  status: refunded
- order_id: "001048"
  customer: Emma Bernard
  city: Toulouse
  product: Chair, ergonomic
  quantity: "2"
  unit_price: "121.16"
  order_date: "2026-08-14"
  status: refunded
- order_id: "001049"
  customer: Gabriel Bernard
  city: Lyon
  product: Desk lamp
  quantity: "4"
  unit_price: "16.49"
  order_date: "2026-09-06"
  status: pending
- order_id: "001050"
  customer: Emma Leroy
  city: Nantes
  product: Chair, ergonomic
  quantity: "1"
  unit_price: "209.76"
  order_date: "2026-01-24"
  status: refunded
- order_id: "001051"
  customer: Arthur Moreau
  city: Montréal
  product: USB-C cable
  quantity: "5"
  unit_price: "99.14"
  order_date: "2026-02-06"
  status: refunded
- order_id: "001052"
  customer: Gabriel Dubois
  city: Toulouse
  product: Monitor 27"
  quantity: "2"
  unit_price: "23.64"
  order_date: "2026-03-22"
  status: refunded
- order_id: "001053"
  customer: Ambre Leroy
  city: Toulouse
  product: Desk lamp
  quantity: "6"
  unit_price: "55.90"
  order_date: "2026-04-15"
  status: shipped
- order_id: "001054"
  customer: Léo Laurent
  city: Lyon
  product: USB-C cable
  quantity: "4"
  unit_price: "98.00"
  order_date: "2026-05-13"
  status: shipped
- order_id: "001043"
  customer: Gabriel Durand
  city: Toulouse
  product: Notebook A5
  quantity: "4"
  unit_price: "199.26"
  order_date: "2026-03-01"
  status: paid

15 lignes · 1 fichier

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

  1. Cliquez sur Ouvrir un fichier, déposez un fichier .csv, .tsv ou .txt sur l’outil, ou choisissez Coller. Si les clés semblent fausses, vérifiez le séparateur et l’encodage dans Paramètres d’importation.
  2. 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.
  3. 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 texteLe 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/falseUne 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 videsnull (par défaut) écrit key: null ; Texte vide "" écrit key: "" ; Omettre la clé retire cette clé de la ligne.
Indentation2 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, y et on sont entre guillemets, pour que le code de la Norvège ne soit pas chargé comme false. Cela vaut aussi pour les clés ("on": x).
  • Zéros initiaux : 0150 et 08001 sont 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-01 et 12 sont entre guillemets pour ne pas être chargés comme un horodatage ou un entier.
  • Texte qui ressemble à une valeur nulle : une cellule contenant null ou ~ 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 3 et 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 kg ou 007. Retrouvez-la dans le lecteur CSV.
  • Une colonne oui/non n’est pas devenue booléenne. Seuls true et false sont convertis, car yes, no et on ne 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.

CSV
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
YAML
- 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.

Normes et références