Saltar al contenido principal

CSV a YAML

Este convertidor transforma un archivo CSV (RFC 4180) en una secuencia de mapeos YAML, enteramente en tu navegador. Los encabezados de columna se asignan a claves, y los encabezados con puntos o corchetes se anidan en una estructura YAML. La primera fila proporciona los nombres de clave, el uso de comillas sigue las reglas de cada formato, y no se sube nada.

Solo local

CSV a YAML: explicación

Un archivo CSV es una cuadrícula; un archivo YAML es un árbol. El puente entre ambos es la fila de encabezados: cada nombre de columna se lee como una ruta en el registro que describe. Un encabezado simple como role se convierte en una clave simple, address.city crea un mapeo address con una clave city dentro, y tags[0] crea una lista — la misma convención de ruta de columna que usa el convertidor de YAML a CSV de este sitio, pero en sentido inverso. Dado que el mapeo es explícito y reversible, un archivo que pasa de CSV a YAML y vuelve llega sin cambios.

El lado CSV se parsea según RFC 4180: delimitadores con coma, escape de comillas dobles cuando un campo contiene una coma, comilla o salto de línea, y campos entre comillas que pueden abarcar varias líneas. Los delimitadores se detectan en la línea de encabezado — coma, punto y coma, tabulador o barra vertical — contando solo fuera de las regiones entre comillas, para que un punto y coma dentro de una descripción no pueda secuestrar la detección. La inferencia de tipos es deliberadamente limitada: solo los valores que coinciden con la gramática de número de JSON se convierten en números, así que un código postal como 02134 conserva su cero inicial.

Todo se ejecuta en esta pestaña del navegador. El texto CSV que pegas es parseado por un motor en la página, el YAML se genera a partir de los registros parseados y ninguno toca la red — abre DevTools, observa que el panel de red se queda en silencio, y la afirmación se comprueba sola.

El ciclo de ida y vuelta también es la comprobación de corrección más rápida, y el Convertidor de YAML a CSV reconstruye la cuadrícula desde el YAML usando las mismas rutas de columna.

Si una exportación terca no se parsea como esperas, la Guía de campos RFC 4180 explica el uso de comillas, CRLF y las desviaciones que contienen los archivos de hoja de cálculo reales.

Cómo funciona realmente la conversión

El motor lee la cuadrícula una vez y nunca vuelve a mirar el texto en bruto — cada decisión posterior se toma con los registros parseados. Ese orden es lo que mantiene las reglas componibles: las rutas de encabezado se expanden antes de inferir tipos, y los tipos se infieren antes de que el emisor de YAML decida qué necesita comillas.

  • Parseo: una pequeña máquina de estados divide el texto en campos, respetando las comillas dobles y saltos de línea dentro de campos entre comillas, y elimina una marca de orden de bytes (BOM) inicial si está presente.
  • Nombres: la primera fila se convierte en los nombres de columna; una celda de encabezado en blanco recurre a column1, column2, etc.
  • Expansión: cada encabezado se decodifica como una ruta — los puntos separan claves de mapeo, los corchetes marcan índices de array — y cada fila se reconstruye como un registro anidado.
  • Emisión: los registros se serializan como una secuencia YAML, con indentación de dos espacios, y los valores solo se ponen entre comillas cuando la forma simple se malinterpretaría.

Qué significan los nombres de encabezado

Los encabezados son el único lugar donde una cuadrícula puede expresar estructura, por lo que se leen como rutas en lugar de etiquetas opacas. El punto y el corchete hacen trabajos diferentes, y esa es la diferencia que hace que el mapeo sea reversible: un punto siempre significa una clave de mapeo, un corchete siempre significa un índice de array, así que tags[0] crea una lista mientras que tags.0 crea un mapeo cuya clave es la cadena "0". Un convertidor que tratara los dos como intercambiables estaría adivinando, y la adivinanza estaría equivocada la mitad de las veces.

Fila de encabezadoYAML generado
address.cityun mapeo address con una clave city dentro
tags[0], tags[1]una lista tags con esos dos elementos
tags.0un mapeo tags con la clave de cadena "0" — no una lista
roleuna clave role simple en cada registro

Celdas, tipos y campos vacíos

La inferencia de tipos existe para que el YAML sea útil, y se mantiene muy controlada. Una celda se convierte en número solo si coincide con la gramática de número de JSON — que prohíbe ceros iniciales — y se convierte en true, false o null solo con esas escrituras exactas en minúsculas. Todo lo demás permanece como cadena, incluyendo FALSE, +1, 0x10 y cualquier entero más largo que el rango seguro, donde el punto flotante descartaría dígitos en silencio. Una celda vacía se trata como un campo ausente en lugar de un valor vacío, porque CSV no puede distinguir entre ambas y la interpretación de ausente es lo que casi siempre significa una fila dispersa.

  • 02134 permanece como la cadena "02134"; 90210 se convierte en el número 90210.
  • true y false se convierten en booleanos; FALSE en mayúsculas permanece como cadena.
  • Una celda con saltos de línea incrustados se convierte en un bloque literal YAML, para que la estructura de líneas sobreviva.
  • Los valores que se volverían a leer como números se emiten entre comillas, lo que mantiene un ciclo de ida y vuelta sin pérdidas.

Dónde este convertidor se niega a adivinar

Los fallos se reportan con un número de línea y una razón, en lugar de ser enmascarados, porque el rediseño silencioso es el único fallo de una herramienta de datos del que no se puede recuperar. Tres situaciones reciben exactamente ese tratamiento:

  • Un campo entre comillas no terminado — una comilla doble abierta y nunca cerrada — aborta el parseo en esa línea.
  • Una fila cuyo conteo de campos difiere del encabezado aún se convierte, pero una advertencia nombra las filas afectadas y establece que los campos faltantes se tratan como ausentes y los extras se descartan.
  • Los nombres de columna duplicados se convierten con el valor más a la derecha ganando, y la advertencia lo indica — coincidiendo con cómo se comporta una importación de hoja de cálculo.

Preguntas frecuentes

¿Convertir CSV a YAML sube mi archivo a algún sitio?

No. El parseo y la generación de YAML se ejecutan dentro de esta pestaña del navegador con JavaScript que se cargó una sola vez cuando la página abrió. No hay una ruta de API a la que enviar datos, y la Content-Security-Policy de la página establece connect-src 'self', por lo que el navegador mismo rechazaría cualquier solicitud saliente. Puedes verificar ambas afirmaciones en DevTools: el panel de red no muestra ninguna solicitud cuando conviertes.

¿Cómo los encabezados CSV se convierten en claves YAML anidadas?

Cada encabezado se decodifica como una ruta: los puntos separan claves de mapeo y los corchetes marcan índices de array, así que address.city se anida bajo una clave address mientras que tags[0] crea una lista. La forma con corchetes no es decorativa — tags.0 crea en su lugar un mapeo con la clave de cadena "0", porque un punto simple no puede decir si el nivel de abajo es una lista u objeto. Mantener las dos escritas distintas es lo que hace que la convención sea reversible.

¿Qué pasa con los números y códigos postales en las celdas?

Una celda se convierte en número solo cuando coincide con la gramática de número de JSON, que prohíbe ceros iniciales — así que 02134 permanece como cadena mientras que 90210 se convierte en número. Los enteros más allá del rango seguro también permanecen como cadenas en lugar de perder dígitos. Los booleanos requieren las escrituras exactas en minúsculas true y false, y lo mismo para null; FALSE en mayúsculas permanece como la cadena que es visualmente.

¿Por qué las celdas vacías desaparecen en la salida YAML?

Una celda vacía se emite como una clave ausente, no como un valor vacío. CSV no tiene forma de distinguir un campo que está genuinamente vacío de uno que una fila simplemente no tiene, y la interpretación de ausente coincide con el caso disperso que realmente ocurre — un registro más corto que la fila más ancha. Si un consumidor downstream necesita la clave presente, una celda vacía explícita entre comillas es la forma de pedirlo.

¿Qué estilo de indentación usa la salida YAML?

Dos espacios por nivel, la convención usada en Kubernetes, CI y archivos Docker, con los guiones de secuencia alineados a su clave padre en lugar de indentados bajo ella. Las celdas de múltiples líneas se convierten en bloques literales para que los saltos de línea incrustados sobrevivan textualmente, y el documento se emite sin un marcador inicial --- porque un archivo de un solo documento no lo necesita.

¿Qué tamaño de archivo CSV puede manejar esto?

El límite práctico es la memoria de esta pestaña, no un tope de subida — el cuadro de pegado es la entrada. Como cada herramienta de hilo principal en este sitio, hay un techo documentado de 8 MB; por encima de él, el procesamiento se rechaza con un mensaje claro en lugar de congelar la página. Para exportaciones tabulares típicas, ese margen es de decenas de miles de filas.