¿Puede un archivo CSV tener un comentario?

203

¿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?

Traté de revisar wikipedia sobre esto y también RFC 4180, pero ambos no mencionan nada que me haga creer que no es parte del formato de archivo, así que es mala suerte para mí y luego debería usar un archivo separado ReadMe.txt para explicar el expediente.

Por último, sé que es fácil para mí agregar mis propios comentarios, pero esperaba que algo como Excel pudiera importarlo de inmediato sin necesidad de que un consumidor tuviera que personalizar el proceso de importación.

Entonces, ¿pensamientos?

Pure.Krome
fuente
1
¿Sobre qué comentarías? Los valores en cada línea o el archivo en sí? ¿Es el archivo XML una alternativa para ti?
Square Rig Master
3
La propuesta fue derribada por Python .
nuevo123456
2
Tal vez una cadena de versión para los datos @SquareRigMaster. Justo como estoy tratando de hacer ahora?
Rob Wells el
@SquareRigMaster - O una declaración de derechos de autor.
Richard Smith

Respuestas:

116

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

skaffman
fuente
23
RFC 4180 es el estándar ahora.
vipw
34
RFC 4180 no es un estándar, rfc4180 dice: "Este memo proporciona información para la comunidad de Internet. No especifica ningún estándar de Internet de ningún tipo. La distribución de este memo es ilimitada".
Paul Weibert
14
OK, ¿podemos decir que es un estándar de facto?
Marco Sulla
1
Todos los RFC son memos que no están destinados a proporcionar ningún estándar de Internet AFAIK
usr-local-ΕΨΗΕΛΩΝ
55
Yah ... eso no es verdad. Existen documentos de seguimiento estándar y documentos de seguimiento no estándar (informativos). El RFC2026 define todo el proceso, incluidas las descripciones, los procesos y las reglas para los documentos emitidos por IETF, con algunas modificaciones a continuación. Cada RFC especificará al principio en qué pista se encuentra.
Steve Hole
31

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, obtiene una matriz que solo contiene los datos reales, sin comentarios.

Pedro_Uno
fuente
30

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

Lo más cercano que puede administrar (con la importación de CSV a una aplicación específica como Excel) es definir una forma especial de etiquetar los 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

Todavía terminas 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 encaje en la celda.

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

Jason Williams
fuente
6

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

La mayoría de las aplicaciones de análisis CSV que he usado implementan tanto la asignación de campo como la selección de registros. Entonces, para comentar las propiedades de un campo, agregue un registro solo para las descripciones de los campos. Para comentar un registro, agregue un campo al final (bueno, todos los registros, realmente) solo para comentarios.

Estas son las dos únicas razones por las que se me ocurre comentar un archivo CSV. Pero el único problema que puedo prever serían los programas que se niegan a aceptar el archivo si algún 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.

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

Tyler Mumford
fuente
2
Y, acabo de leer que no querías personalizar el proceso de importación. Lo siento por eso. Esperemos que alguien encuentre esto útil, entonces.
Tyler Mumford
1
Buen post. Otra razón por la que puedo pensar por qué es posible que desee comentarios es agregar algunos metadatos sobre el archivo en su conjunto. Agregar una columna o fila completa solo para una celda con esta información se siente un poco incómodo.
Ben Hershey
3

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

No existe 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 importará el archivo CSV.

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

pavium
fuente
2
There is no standard which defines the contents of a CSV file Falso.
Qix - MONICA FUE MAL
55
@Qix - de la sección 2 del documento referenciado: "Si bien existen varias especificaciones e implementaciones para el formato CSV (por ejemplo, [4], [5], [6] y [7]), no hay una especificación formal en existencia "
Alien Technology
3

Si está analizando el archivo con un comando FOR en un archivo por lotes, funciona con 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!
Ken Bob Saxton
fuente
1
!! ¿Eres el verdadero Ken Bob descalzo?
Geoffrey Hale
2

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 'citas' en la primera línea.

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

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

Rogerio Granato
fuente