2009-12-25 9 views
152

¿Hay alguna manera 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?¿Puede un archivo CSV tener un comentario?

he intentado comprobar wikipedia en esto 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 entonces yo debería usar una manivela de archivo ReadMe.txt separada para explicar el archivo

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

Entonces, ¿pensamientos?

+1

¿Qué le comentar ¿en? Los valores en cada línea o el archivo en sí? ¿El archivo XML es una alternativa para usted? –

+3

La preposición se derribó para [Python] (http://bugs.python.org/issue1225769). – new123456

+2

Quizás una cadena de versión para los datos @SquareRigMaster. Justo como estoy tratando de hacer ahora? –

Respuesta

78

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

+19

RFC 4180 es el estándar ahora. – vipw

+13

RFC 4180 no es un estándar, [rfc4180] (http://tools.ietf.org/html/rfc4180) dice: "Este memo proporciona información para la comunidad de Internet. No especifica un estándar de Internet de ningún tipo. La distribución de este memo es ilimitada ". –

+7

OK, ¿podemos decir que es un estándar de facto? –

2

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

No hay un estándar que defina los contenidos 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 es generalmente Excel. Debería preguntarse cómo define Excel un comentario. En otras palabras, ¿qué haría que Excel ignore una línea (o parte de una línea) en el archivo CSV? No estoy al tanto de nada que pueda hacer esto.

+1

'No hay un estándar que defina los contenidos de un archivo CSV' [False.] (Http://tools.ietf.org/html/rfc4180) – Qix

+3

@Qix - de la sección 2 del documento al que se hace referencia:" Si bien hay Varias especificaciones e implementaciones para el formato CSV (por ej. [4], [5], [6] y [7]), no existe una especificación formal en existencia. " –

23

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

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

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

Todavía se termina con una celda de la hoja de cálculo que muestra el número 0, pero el comentario es oculto.

Alternativamente, puede ocultar el texto simplemente rellenarlo con espacios para que no se muestra en la parte visible de la célula:

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

Tenga en cuenta que es necesario seguir el comentario de texto con una coma para que Excel llene la siguiente celda y 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.

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 de CSV que he utilizado implementan la asignación de registros y el campo. Por lo tanto, para comentar las propiedades de un campo, agregue un registro solo para descripciones de campo. Para comentar un registro, agregue un campo al final (bueno, todos los registros, realmente) solo para comentarios.

Estas son las dos únicas 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, así que siéntase libre de señalar cualquier error en mi teoría.

+1

Aa y yo _justo_ leí que no deseaba personalizar el proceso de importación. Lo siento por eso. Espero que alguien encuentre esto útil, entonces. –

1

Si necesita 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 

Ponga mucha atención a las cotizaciones '' en la primera línea.

Cuando convierta su texto en columnas utilizando 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 las comas, manteniendo la línea 'comentario' como un valor de columna única (y eliminará las comillas).

19

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

Uso el ostermiller CSV parsing library para leer y procesar dichos archivos. Esa biblioteca le permite establecer el caracter de comentario. Después de la operación de análisis, obtienes una matriz que contiene los datos reales, sin comentarios.

2

Si va a analizar 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! 
+0

!! ¿Eres el verdadero Barefoot Ken Bob? –

Cuestiones relacionadas