¿Puede un archivo CSV tener un comentario?


¿Hay alguna forma oficial de permitir que un archivo con formato CSV permita comentarios, ya sea en su propia línea O al final de una línea?

He intentado comprobar wikipedia en este y también RFC 4180 pero ambos no mencionan nada que me lleva a creer que no es parte del formato de archivo por lo que es mala suerte para mí y debería usar un ReadMe separado.txt file thingy para explicar el archivo.

Por último, sé que es fácil para mí agregar mis propios comentarios, pero estaba con la esperanza de que algo como Excel podría importarlo de inmediato sin necesidad de que un consumidor tenga que personalizar el proceso de importación.

Entonces, ¿pensamientos?

Author: smci, 2009-12-25

7 answers

El CSV "estándar" (tal como es) no dicta cómo deben manejarse los comentarios, no, depende de la aplicación establecer una convención y seguir con ella.

 92
Author: skaffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-25 11:27:52

No, CSV no especifica ninguna forma de etiquetar comentarios, solo serán cargados por programas como Excel como celdas adicionales que contienen texto.

Lo más cercano que puede administrar (con CSV importado a una aplicación específica como Excel) es definir una forma especial de etiquetar comentarios que Excel ignorará. Para Excel, puede "ocultar" el comentario (en un grado limitado) incrustándolo en una fórmula. Por ejemplo, intente importar el siguiente archivo csv a Excel:

=N("This is a comment and will appear as a simple zero value in excel")
John, Doe, 24

Usted todavía terminan con una celda en la hoja de cálculo que muestra el número 0, pero el comentario está oculto.

Alternativamente, puede ocultar el texto simplemente rellenándolo con espacios para que no se muestre en la parte visible de la celda:

                              This is a sort-of hidden comment!,
John, Doe, 24

Tenga en cuenta que debe seguir el texto del comentario con una coma para que Excel llene la siguiente celda y, por lo tanto, oculte cualquier parte del texto que no quepa en la celda.

Hacks desagradables, que solo funcionarán con Excel, pero pueden basta con hacer que su salida se vea un poco más ordenada después de la importación.

 26
Author: Jason Williams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-25 12:26:53

En los datos de ingeniería, es común ver el símbolo # en la primera columna utilizada para señalar un comentario.

Utilizo la biblioteca de análisis CSV de ostermiller para leer y procesar dichos archivos. Esa biblioteca le permite establecer el carácter de comentario. Después de la operación de análisis se obtiene una matriz que solo contiene los datos reales, sin comentarios.

 25
Author: Pedro_Uno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-27 20:37:42

Creo que la mejor manera de agregar comentarios a un archivo CSV sería agregar un campo o registro de "Comentarios" directamente en los datos.

La mayoría de las aplicaciones de análisis CSV que he usado implementan mapeo de campo y selección de registros. Por lo tanto, para comentar las propiedades de un campo, agregue un registro solo para las descripciones de campo. Para comentar un registro, agregue un campo al final del mismo (bueno, todos los registros, en realidad) solo para comentarios.

Estas son las únicas dos razones que se me ocurren para comentar un Archivo CSV. Pero el único problema que puedo prever serían los programas que se niegan a aceptar el archivo en absoluto si un solo registro no pasa algunas reglas de validación. En ese caso, tendría problemas para escribir un registro de descripción de campo de tipo cadena para cualquier campo numérico.

No soy de ninguna manera un experto, sin embargo, así que siéntase libre de señalar cualquier error en mi teoría.

 6
Author: Tyler Wayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-02 07:18:33

Un archivo separado por comas es realmente un archivo de texto donde las líneas consisten en valores separados por comas.

No hay un estándar que defina el contenido de un archivo CSV, por lo que no hay una forma definida de indicar un comentario. Depende del programa que va a importar el archivo CSV.

Por supuesto, esto suele ser Excel. Usted debe preguntarse cómo Excel define un comentario? En otras palabras, ¿qué haría que Excel ignorara una línea (o parte de una línea) en el archivo CSV? Soy no estoy consciente de nada que pueda hacer esto.

 2
Author: pavium,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-25 11:36:57

Si está analizando el archivo con un comando FOR en un archivo por lotes, funciona un punto y coma (;)

REM test.bat contents

for /F "tokens=1-3 delims=," %%a in (test.csv) do @Echo %%a, %%b, %%c

;test.csv contents (this line is a comment)

;1,ignore this line,no it shouldn't

2,parse this line,yes it should!

;3,ignore this line,no it shouldn't

4,parse this line,yes it should!

SALIDA:

2, parse this line, yes it should!

4, parse this line, yes it should!
 2
Author: Ken Bob Saxton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-03 18:52:59

Si necesitas algo como:

  │ A                              │ B
──┼────────────────────────────────┼───
1 │ #My comment, something else    │
2 │ 1                              │ 2

Su CSV puede contener las siguientes líneas:

"#My comment, something else"
1,2

Presta mucha atención a las 'comillas' en la primera línea.

Al convertir su texto en columnas usando el asistente de Excel, recuerde marcar 'Tratar delimitadores consecutivos como uno', configurándolo para usar 'comillas' como delimitador.

Por lo tanto, Excel dividirá el texto en comas, manteniendo la línea 'comentario' como un valor de columna única (y eliminará las comillas).

 1
Author: Rogerio Granato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-28 14:02:15