Español

Datos y hojas de cálculo · CSV Limpiador

Cómo un analizador CSV maneja comillas, comas incrustadas y nuevas líneas en los campos

· Cómo funciona

csv análisis formatos de datos

Una ruta de estado del analizador que mantiene comas entrecomilladas, comillas dobles y saltos de línea incrustados dentro de los campos
Ilustración de vector original de ToolAcre

La división por comas funciona hasta que un campo contiene una coma, una comilla o un salto de línea. Esta publicación explica la pequeña máquina de estados que utiliza un analizador CSV real, por qué existen reglas de cotización y qué hace una herramienta de reparación cuando las cotizaciones no funcionan.

Un campo de dirección con una coma desplazó cada columna hacia la derecha: por qué la división ingenua no se analiza

La división de una línea en cada coma falla tan pronto como una dirección postal, nota o descripción del producto contiene ese carácter. El separador solo finaliza un campo mientras el analizador está fuera de un campo entrecomillado. Entre comillas, el mismo byte pertenece al valor y debe llegar a la vista previa sin cambios.

ToolAcre demuestra esto con pruebas en lugar de asumir que CSV es texto simple. Un archivo de punto y coma que contiene comas dentro de notas entre comillas aún se detecta como delimitado por punto y coma porque cada candidato se analiza en filas antes de calificar su forma rectangular. Los recuentos de puntuación brutos nunca deciden el dialecto.

Las reglas de cotización: los campos que contienen el delimitador, las comillas o las nuevas líneas se incluyen entre comillas dobles y las comillas internas se duplican.

Un campo que contiene el delimitador elegido, una comilla doble, un avance de línea o un retorno de carro se cita durante la serialización. Una comilla doble literal dentro de un campo entrecomillado está representada por dos comillas adyacentes. En el análisis, ese par aporta una comilla a la celda y no cierra el campo.

Las comillas solo abren un estado entre comillas cuando aparecen al comienzo de un campo que de otro modo estaría vacío. En un valor sin comillas, como la tubería 12", la comilla sigue siendo información literal. Esa elección de implementación se prueba y evita que una marca de medición en medio del texto se trague las columnas posteriores.

Un analizador como máquina de estados: comillas internas versus comillas externas, y cómo un carácter a la vez decide dónde termina un campo

El bucle central rastrea un campo actual, una fila actual y un estado `inQuotes`. Fuera de las comillas, el delimitador empuja un campo y CR, LF o CRLF empuja una fila. Dentro de las comillas, se añaden todos los caracteres excepto una comilla, que forma un par de escape o sale del estado de comillas.

Esta progresión de un carácter explica por qué una expresión regular simple o una división de línea es frágil. Que una nueva línea finalice un registro depende de la entrada anterior, y que una cita cierre el campo depende de la siguiente cita. El analizador transmite exactamente ese estado mínimo a través de la cadena.

Nuevas líneas integradas: por qué una fila puede abarcar varias líneas y por qué las herramientas basadas en líneas como grep o wc cuentan errores de registros

Un campo entrecomillado puede contener LF, CRLF o un CR solitario, y esos caracteres permanecen dentro del valor. En consecuencia, un registro lógico puede ocupar varias líneas de visualización en un editor de texto. Contar líneas físicas con un comando orientado a líneas no necesariamente cuenta filas de datos.

Después de la cita de cierre, el siguiente delimitador o final de registro retoma el significado estructural. Las pruebas de ToolAcre afirman tanto el LF incorporado como el CRLF incorporado, luego verifican que solo se produjo una fila. Este comportamiento no se infiere de una etiqueta RFC; lo ejerce directamente la máquina de estados enviada.

Citas rotas: citas desequilibradas que se tragan el resto del archivo y cómo una herramienta de reparación vuelve a cotizar los campos de manera consistente

El esquema prometía una reparación de la cotización, pero una cotización no cerrada es inherentemente ambigua. ToolAcre informa `UNCLOSED_QUOTE` en la fila donde comenzó el estado citado y luego lee todo en un campo. No inventa una posición de cierre ni vuelve a cotizar los registros previstos.

Esa falla conservadora preserva el texto consumido para su inspección y evita pretender saber si una cita posterior o una nueva línea se entendieron como datos. Corrija la fuente o regenere la exportación, luego vuelva a cargarla. La serialización puede normalizar una tabla analizada correctamente; no puede recuperar los límites de las filas que la fuente con formato incorrecto hizo incognoscibles.

Se informa la cotización rota pero no se repara; un campo abierto consume el texto restante

Utilice `name,note` como encabezado, luego una fila con Ada y una nota que contiene una coma más un salto de línea, y otra cuya nota es `She said "hi"`. En la fuente CSV, cite la nota larga y escriba las comillas internas como `""hi""`. El analizador devuelve dos filas de datos y conserva ambos caracteres especiales.

Cuando se serializan con un mínimo de comillas, los nombres simples no necesitan comillas, mientras que los campos de notas se citan porque contienen caracteres estructurales. Al analizar ese resultado nuevamente se obtiene el mismo encabezado y celdas incluso si desaparecieran las citas fuente redundantes. La igualdad de datos, no el estilo byte por byte, define este viaje de ida y vuelta.

Lo que esto no cubre: los dialectos que utilizan barras invertidas y heurísticas para adivinar la intención al citar son realmente ambiguos.

Los dialectos de escape de barra invertida están fuera del analizador. Una barra invertida antes de una comilla no tiene aquí ningún significado especial en la máquina de estados; sigue siendo texto, mientras que la cita se interpreta según las reglas de las comillas dobles. La herramienta también se niega a adivinar la intención una vez que una cita de apertura no coincide.

Esos límites son importantes al importar un volcado de base de datos configurado para otra convención de escape. Identifique el dialecto del productor antes de cargarlo o exporte con citas estilo RFC. Un analizador que reconoce silenciosamente varias reglas de escape incompatibles puede convertir barras invertidas literales en sintaxis de control y ocultar una falta de coincidencia.

Respete las comillas y las filas permanezcan intactas: cómo la reparación de cotizaciones del limpiador ToolAcre CSV produce un archivo que los analizadores estándar leen correctamente

Respetar el estado entre comillas mantiene los delimitadores y las terminaciones de registros dentro de las celdas a las que pertenecen. ToolAcre también maneja tres formularios de final de línea, elimina una lista de materiales UTF-8 inicial e informa discrepancias en el ancho de fila. Estos comportamientos son partes independientes de una lectura estructural en lugar de una colección de trucos de búsqueda y reemplazo.

Después de un análisis válido, la serialización duplica las comillas incrustadas y cita cualquier campo que requiera protección, con salida CRLF de forma predeterminada. Después de una cotización no cerrada no válida, deténgase y repare a partir de la fuente de evidencia. La herramienta puede estandarizar celdas conocidas; no pretende reconstruir una tabla incognoscible.