Ir al contenido
Allin

Punto y coma, tabulación, barra: elegir un delimitador que sobreviva al viaje

Publicado el 27/7/2026 · 16 min de lectura · Herramientas para desarrolladores

Daniel Okonkwo

Daniel OkonkwoDesarrollador front-end y redactor de Tecnología en Allin

Rendimiento web · Formatos de archivo

Verificado con 4 fuentes

Ver perfil
En resumen

El delimitador no es cuestión de gusto: lo decide el separador decimal de quien abre el archivo. En las convenciones francesa, alemana, española, italiana y portuguesa la coma es la marca decimal, así que el mismo carácter no puede además separar los campos sin entrecomillar todos los números. Esos sistemas usan el punto y coma, y una hoja de cálculo así configurada abre un archivo separado por comas como una única columna de texto. Pasa una exportación real con punto y coma —Produit;Prix;Remise;Ville con valores como 12,50 y 5,0% y una ciudad entrecomillada Lyon, Rhône— por el conversor de delimitador y la diferencia se cuenta. Escrito con punto y coma, tabulaciones o barras, el archivo no necesita ninguna celda entrecomillada. Escrito con comas, necesita cinco: cada número decimal y cada porcentaje hay que envolverlos para que la coma interior no se lea como frontera. Escrito con espacios, una celda queda entrecomillada y el archivo se vuelve ilegible para todo lo que parta por espacios en blanco. La tabulación es la más segura de las tres alternativas, porque ningún formato numérico y casi ninguna dirección contiene una, pero no sobrevive al copiar y pegar: una tabulación tecleada en un campo del navegador mueve el foco, y muchos editores la convierten en espacios. La barra es igual de segura e igual de no estándar: ninguna hoja de cálculo la abre sin un diálogo de importación. Excel además honra una primera línea sep=; como instrucción, convención de fabricante ausente del RFC 4180. El conversor reescribe bien esa línea al cambiar de delimitador, convirtiendo sep=; en sep=, — aunque un conversor que desconozca la convención la leerá como tu fila de cabecera.

Por qué el idioma de quien lee decide el delimitador, qué hace el conversor con el entrecomillado al cambiar, qué es realmente la primera línea sep=, y el recuento de celdas entrecomilladas en la misma exportación escrita de cinco maneras.

Un carácter no puede hacer dos trabajos

Todo el asunto se reduce a una colisión. Un archivo CSV necesita un carácter que marque la frontera entre campos. Un número escrito necesita un carácter que marque la frontera entre la parte entera y la fracción. En las convenciones anglosajonas son la coma y el punto, y no hay conflicto. En las convenciones francesa, alemana, española, italiana y portuguesa la marca decimal es la coma, y el conflicto es total: el carácter que separa doce de cincuenta dentro de un precio es el mismo que separaría el precio de la columna siguiente.

Solo hay dos salidas para una colisión así, y la industria tomó la segunda. La primera es mantener la coma como separador de campos y entrecomillar todo valor que contenga una, lo cual es legal y el formato lo prevé explícitamente. La segunda es cambiar de separador. Los sistemas operativos de esas regiones llevan un ajuste de separador de listas junto al separador decimal, y está puesto en el punto y coma precisamente para que los dos no se crucen; las hojas de cálculo lo leen al guardar y al abrir un CSV. El resultado es que un archivo exportado por un colega en Lyon y otro exportado por un colega en Chicago son formatos distintos con la misma extensión, y cada uno se abre como una columna de texto en la máquina del otro.

La misma exportación, cinco escrituras, contada

Aquí va una pequeña exportación francesa, cuatro columnas: Produit, Prix, Remise, Ville. Dos filas: Café a 12,50 con un 5,0% de descuento en Lyon, Rhône, y Thé a 8,90 con 0,0% en Paris. Contiene todo lo que hace real esta pregunta: comas decimales, un porcentaje escrito con coma, y un nombre de ciudad que contiene legítimamente una coma y un espacio.

Pásala cinco veces por el conversor de delimitador y cuenta las celdas que vuelven entre comillas. Con punto y coma, tabulaciones o barras: cero. Ni una celda del archivo necesita protección, porque ningún valor contiene ninguno de esos tres caracteres. Con comas: cinco. El precio del Café, su descuento, su ciudad, el precio del Thé y su descuento tienen que ir entrecomillados, y el archivo pasa de limpio a atestado. Con espacios: una celda entrecomillada, la ciudad, y el resto del archivo se vuelve una trampa para todo lo que trate una racha de espacios como una sola frontera.

Fíjate en lo que el conversor hace con el entrecomillado, porque ahí es donde fallan los scripts caseros. Al pasar de punto y coma a comas, añade comillas alrededor de 12,50 y de 5,0%: valores perfectamente seguros antes y que ya no lo son. Al pasar de comas a punto y coma, quita las comillas de Lyon, Rhône, porque una coma dentro de un campo ya no es una frontera y la protección se ha vuelto ruido. Un script que intercambia los caracteres con un buscar y reemplazar no hace ninguna de las dos cosas: reescribe la coma de Lyon, Rhône como punto y coma, partiendo la ciudad en dos, y deja 12,50 sin comillas, así que el siguiente lector encuentra una columna de más. Analizar y volver a emitir es la única implementación correcta, y la señal visible de que una herramienta lo hace es que el entrecomillado cambia cuando cambia el delimitador.

Tabulación: la más segura sobre el papel, frágil en tránsito

El argumento a favor de la tabulación es que ningún formato numérico contiene una, en ninguna configuración regional. Tampoco ninguna dirección postal, nombre de producto o nombre de persona de uso corriente, así que un archivo separado por tabulaciones con datos de negocio reales no suele necesitar entrecomillado alguno, que es justo lo que mostró el recuento de cinco escrituras anterior. Es además el formato que la propia hoja de cálculo deja en el portapapeles: copia un bloque de celdas y lo que aterriza ahí como texto plano va separado por tabulaciones, y por eso pegar una selección en un editor de texto te entrega un TSV ya hecho. Las herramientas de línea de comandos van por el mismo lado, cut la primera: parte por la tabulación salvo que se le diga otra cosa. Por los méritos del carácter, gana.

Pierde en el transporte. Una tabulación es un carácter de control con un cometido en cada interfaz de entrada de texto por la que pasa, y ese cometido no es ser dato. Tecleada en un campo del navegador, mueve el foco al siguiente control. Pegada en un mensaje de chat o en un gestor de incidencias, a menudo se representa como una racha de espacios y a veces se convierte en ellos. Muchos editores están configurados para expandir una tabulación tecleada a espacios, así que quien abra el archivo para corregir una celda puede destruir la estructura de cada línea que toque sin ver nada cambiar en pantalla. Y como una tabulación parece un tramo en blanco, una tabulación convertida en espacios es invisible hasta que un analizador te dice que la fila tiene un solo campo.

Un detalle sobre cómo este conversor escribe la salida separada por tabulaciones merece conocerse, porque sorprende a quien espera un TSV en bruto. Aplica las reglas de entrecomillado del CSV al formato de tabulaciones: una celda que contenga una tabulación, un salto de línea o una comilla doble se envuelve en comillas y sus comillas internas se duplican. Así, una celda con say "hi" sale como "say ""hi""" aunque no tenga ninguna tabulación. Las hojas de cálculo lo leen bien. Las herramientas que parten cada línea por la tabulación y toman los trozos al pie de la letra, no: ven las comillas como parte del valor. Si tu consumidor es un simple separador de campos y no un lector de CSV, comprueba qué hace con una celda entrecomillada antes de fiarte del archivo.

La línea sep=, y lo que este conversor acierta por accidente

Excel acepta una primera línea con la forma sep=; y la lee como una instrucción: el carácter que sigue al signo igual es el separador de campos de este archivo, diga lo que diga el ajuste de separador de listas de la máquina. Es el único mecanismo de uso corriente que permite a un archivo CSV declarar su propio delimitador, y no forma parte ni del RFC 4180 ni del registro del tipo de medio text/csv: es una convención de fabricante que se extendió porque resuelve un problema real al precio de una línea.

Ahí está el problema. Nada que no haya aprendido la convención la reconocerá, y el archivo no tiene forma de señalar que esa línea es metadato y no dato. Un lector de CSV genérico la trata como el primer registro, y si además usa la primera fila como cabecera, tus nombres de columna pasan a ser sep= y una serie de marcadores posicionales, mientras tu cabecera real se desliza hacia los datos. Es exactamente lo que ocurre si le das un archivo así a un conversor de CSV a JSON sin quitar antes la línea.

El conversor de delimitador lo gestiona bien, y la razón merece contarse porque nadie la diseñó. La herramienta no ha oído hablar de la convención: analiza sep=; como un registro ordinario, lo que con el punto y coma como delimitador da dos celdas —sep= y una vacía— y luego reescribe ese registro con el nuevo delimitador. Convertir a comas produce sep=, convertir a tabulaciones produce sep= seguido de una tabulación, y convertir a barras produce sep=|. En todas las direcciones la pista sigue siendo cierta para el archivo que etiqueta. El mismo accidente ayuda a la detección: la línea de pista contiene exactamente una aparición del carácter que nombra y ninguna de los otros tres candidatos, y solo se tienen en cuenta los caracteres vistos en el primer registro — así que un archivo con la pista ofrece un único candidato, justo el que la línea nombra.

La detección automática pesa cinco registros, y la regularidad gana a la frecuencia

Aquí la detección cuenta la coma, el punto y coma, la tabulación y la barra, saltándose lo que esté entre comillas, y lo hace registro por registro: cinco como mucho, nunca el archivo entero. Un candidato cuyo recuento se repite idéntico en cada registro leído recibe un bonus grande, así que la regularidad pesa más que la mera frecuencia en la línea de cabecera. Dale una cabecera a,b,c|d sobre las filas 1|2 y 3|4 y la respuesta es la barra, aunque esa cabecera lleve dos comas frente a una sola barra: el recuento de barras se repite en cada registro, mientras que el de comas cae a cero ya en el segundo. La regularidad es la mejor señal, porque una frontera de columna real aparece el mismo número de veces en cada fila de un archivo bien formado, mientras que un carácter que simplemente está en un título aparece donde le toca.

Dos límites sobreviven a esa regla, y conviene conocer ambos antes de dejar el ajuste en automático. El primero: solo son candidatos los caracteres que aparecen en el primer registro. Una cabecera a,b sobre una fila 1;2;3;4 sigue devolviendo la coma, porque el punto y coma no aparece nunca en la línea que arma la lista — las filas de debajo no pueden promover un carácter que la cabecera no mostró. El segundo: cinco registros son una ventana, no una prueba. Dale una cabecera a,b,c|d sobre cuatro filas de la forma 1|2 y responde barra; añade un sexto registro 9|10|11, que rompe el patrón, y la respuesta sigue siendo la barra, porque ese registro no se lee nunca. Sube esa misma fila al quinto lugar y la respuesta salta a la coma. El síntoma de una mala apuesta es el mismo en ambos casos: las filas vuelven como una sola celda ancha, con el separador real todavía dentro. El arreglo es un clic: fija explícitamente el delimitador de origen en vez de dejarlo en automático. Un archivo sin delimitador alguno cae de vuelta a la coma, lo que no cambia nada y es el valor por defecto correcto.

Dos últimas notas prácticas. La opción de espacio existe en la herramienta y casi nunca debería elegirse: todo campo que contenga un espacio se entrecomilla, lo que en datos reales son casi todos, y ningún lector trata una racha de espacios como tú esperas. Y la conversión es reversible en ambos sentidos con entrada bien formada: toma un archivo con comas cuya ciudad esté entrecomillada como Paris, France, conviértelo a punto y coma y vuelve, y recuperas el archivo original carácter a carácter, porque el entrecomillado se recalcula en cada paso en vez de arrastrarse.

La misma exportación francesa escrita de cinco maneras — recuentos de celdas entrecomilladas medidos ejecutando el conversor
DelimitadorCeldas entrecomilladas necesariasDónde funcionaDónde se rompe
Coma5 de 12 celdasEl valor por defecto de las herramientas en locale inglesa y del registro del tipo de medioUna hoja de cálculo cuyo separador de listas es el punto y coma abre todo el archivo en una columna
Punto y coma0 de 12 celdasCualquier máquina cuya marca decimal sea la coma: convenciones francesa, alemana, española, italiana, portuguesaUna hoja de cálculo en locale inglesa, y todo importador que asuma la coma sin preguntar
Tabulación0 de 12 celdasArchivos que van de máquina a máquina; ningún formato numérico ni dirección contiene una tabulaciónEl copiar y pegar: una tabulación mueve el foco en un formulario y muchos editores la convierten en espacios
Barra vertical0 de 12 celdasVisible, sobrevive al copiar y pegar, y no aparece en casi ningún dato naturalNo estándar: ninguna hoja de cálculo lo abre sin diálogo de importación, y ningún tipo de medio lo nombra
Espacio1 de 12 celdas, y muchas más con datos realesNada que no haga mejor otro delimitadorTodo campo con un espacio, o sea casi todos los nombres, direcciones y descripciones
Conversor de delimitadorCambia el delimitador de tus datos — coma, tabulación, punto y coma, barra o espacio. Suelta un archivo en vez de pegarlo: se lee en tu navegador y nunca se envía.Probar la herramienta

Preguntas frecuentes

Mi colega abre mi CSV y todo está en la columna A. ¿Qué le envío en su lugar?
Su máquina espera un separador de campos distinto del que usaste, y nueve de cada diez veces eso significa que enviaste comas a alguien cuyo separador de listas es el punto y coma. Convierte el archivo a punto y coma y vuélvelo a enviar. Si no sabes cuál necesita, o si el archivo va a varias personas a la vez, hay dos opciones robustas: añadir una primera línea sep= seguida de tu delimitador, que Excel honra y que hace el archivo autodescriptivo, o enviar un archivo de hoja de cálculo de verdad en vez de un CSV, ya que ese formato registra su propia estructura y no tiene separador que adivinar. Ojo: la línea sep= solo ayuda a un lector que conozca la convención; un script que lea el archivo la tomará por tu fila de cabecera.
¿Un archivo separado por comas con números entrecomillados sigue siendo correcto?
Sí, del todo. Entrecomillar un campo que contiene el delimitador es justo para lo que existe el mecanismo, y un archivo bien entrecomillado se analiza bien en todas partes. Las objeciones son prácticas, no formales. Es mucho más difícil de leer a ojo, así que quien recorra el archivo buscando un error tiene que abrirse paso entre las comillas. Es más grande, por dos caracteres por valor entrecomillado más una comilla doblada por cada comilla interna. Y es frágil en manos de quien lo edite después: alguien que abra el archivo en un editor y quite lo que parece una comilla suelta alrededor de un precio acaba de corromper todas las filas por debajo del punto donde las columnas se desplazaron. Elegir un delimitador que no aparezca en los datos elimina del todo la necesidad de entrecomillar, y un archivo que nunca necesita comillas no lo puede romper quien lo ordene.
¿Uso tabulación o barra cuando controlo los dos extremos?
Tabulación si el archivo solo se mueve entre programas, y barra si un humano va a mirarlo o a moverlo. Ambas son igual de seguras frente a los datos —ninguna aparece en un número, una dirección o un nombre de uso corriente—, así que la diferencia va enteramente de manejo. La tabulación gana en herramientas: las hojas de cálculo y las utilidades de línea de comandos abren un archivo separado por tabulaciones sin diálogo de importación. La barra gana en visibilidad y en supervivencia: se ve en una terminal, es inequívoca en una captura de pantalla, y atraviesa sin daño un mensaje de chat, un campo de formulario y un editor de texto, cosa que no vale para la tabulación en ninguno de los tres casos. Si el archivo va a pegarse en algún sitio en algún momento de su vida, elige la barra.
¿Por qué el conversor añade comillas al pasar de punto y coma a comas?
Porque esas celdas contienen una coma y la coma acaba de convertirse en frontera. Un precio escrito 12,50 era un valor ordinario en un archivo con punto y coma y se leería como dos columnas en un archivo con comas, así que hay que envolverlo. Lo mismo pasa con un porcentaje escrito 5,0% y con cualquier dirección que contenga una coma. No es prudencia del conversor: es el mínimo necesario para que el archivo siga significando lo que significaba. La operación inversa quita comillas por la misma razón: vuelve a punto y coma y las comillas de un valor cuyo único carácter especial era una coma desaparecen, porque ese carácter ya no separa nada. Si prefieres no arrastrar las comillas, ese es justamente el argumento para convertir a tabulaciones o barras, donde nada en los datos necesita protección.
¿Se convierte también el separador decimal?
No, y no debería serlo. El conversor de delimitador cambia la estructura del archivo y nunca el contenido de una celda: un precio escrito 12,50 sigue siendo 12,50 elijas el delimitador que elijas, y un precio escrito 12.50 sigue siendo 12.50. Convertir también los números sería una operación distinta y mucho más peligrosa, porque exigiría decidir, celda por celda, si una coma es marca decimal o separador de miles, y 1,500 es uno y medio o mil quinientos según la respuesta. Si necesitas reformatear los números para un lector de otra convención, hazlo como un paso aparte y deliberado en el que veas qué columnas se ven afectadas, y comprueba un valor cuya respuesta conozcas antes de aceptar el resultado.

Artículos que podrían interesarte

Todas las guías
ExplicaciónDe CSV a JSON: los cinco casos que rompen cualquier conversorDelimitadores entrecomillados, saltos de línea incrustados, tipos ambiguos, cabeceras duplicadas y codificación. Cada caso se pasó por el conversor y aquí está la salida exacta, incluidos los dos que no salva.ExplicaciónPor qué tu CSV rompe los acentos y las fechas en ExcelTres averías completamente distintas se esconden tras la misma frase. Una es la codificación, otra el separador, otra Excel adivinando tipos mientras abre el archivo, y el remedio es distinto en cada caso. Así se distinguen en cinco segundos.GuíaPegar una tabla en un pull request: qué se rompe y los dos caracteres que lo rompenUna tabla Markdown prohíbe exactamente dos caracteres dentro de una celda: la barra vertical y el salto de línea. Aquí está qué hace cada uno, cómo los trata un conversor, por qué el escape debe aplicarse en el orden correcto, y por qué el relleno nunca importa.GuíaTransponer una tabla cuyas filas deberían haber sido columnasQué le pasa a la fila de cabecera, a las filas de longitud desigual, a los tipos — y la única cosa con la que se confunde habitualmente transponer y que no puede hacer.ExplicaciónDe JSON a CSV cuando la estructura está anidada: por qué no hay una respuesta correctaLos mismos dos pedidos salen con cinco columnas de un conversor y diez de otro, y ninguno se equivoca. Rutas con puntos, arrays de escalares, arrays de objetos y registros con claves distintas: cuatro decisiones, tomadas por ti y casi siempre en silencio.GuíaCódigos de estado HTTP explicados: los que de verdad se confunden301 frente a 308, 302 frente a 307, 401 frente a 403, 404 frente a 410 — y qué promete de verdad Retry-After en un 429 o un 503. Los pares donde elegir mal el código cambia el comportamiento, no solo la redacción.

Herramientas relacionadas

Esto describe lo que hacen estos conversores hoy, comprobado ejecutándolos, y no lo que una norma obligue a hacer a un conversor. El CSV no tiene norma prescriptiva: el RFC 4180 es informativo y describe una práctica habitual, así que dos herramientas aparentemente correctas pueden discrepar sobre el mismo archivo sin que ninguna se equivoque. El aplanado, la detección de tipos y la de arrays son convenciones, no reglas. Antes de convertir datos que no puedas volver a exportar, pasa primero por una copia y compara el número de filas y columnas en ambos extremos.

Fuentes

¿Has detectado un error en este artículo?