Um arquivo CSV pode ter um comentário?

203

Existe alguma maneira oficial de permitir que um arquivo formatado em CSV permita comentários, em sua própria linha OU no final de uma linha?

Tentei verificar a wikipedia sobre isso e também o RFC 4180, mas ambos não mencionam nada que me leve a acreditar que não faz parte do formato do arquivo, portanto, isso me dá azar e, então, devo usar um arquivo ReadMe.txt separado para explicar o Arquivo.

Por fim, sei que é fácil adicionar meus próprios comentários, mas esperava que algo como o Excel pudesse importá-lo imediatamente, sem a necessidade de um consumidor personalizar o processo de importação.

Então, pensamentos?

Pure.Krome
fonte
1
Sobre o que você comentaria? Os valores em cada linha ou no próprio arquivo? O arquivo XML é uma alternativa para você?
Square Rig Master
3
A proposta foi abatida para Python .
precisa saber é o seguinte
2
Talvez uma string de versão para os dados @SquareRigMaster. Assim como eu estou tentando fazer agora?
Rob Wells
@SquareRigMaster - Ou uma declaração de direitos autorais.
Richard Smith

Respostas:

116

O "padrão" CSV (como ele é) não determina como os comentários devem ser tratados; não, cabe ao aplicativo estabelecer uma convenção e cumpri-la.

skaffman
fonte
23
O RFC 4180 é o padrão agora.
vipw
34
A RFC 4180 não é um padrão, diz rfc4180 : "Este memorando fornece informações para a comunidade da Internet. Não especifica nenhum tipo de padrão da Internet. A distribuição deste memorando é ilimitada."
Paul Weibert
14
OK, podemos dizer que é um padrão de fato?
Marco Sulla
1
Todas as RFCs são memorandos que não pretendem fornecer nenhum padrão AFAIK da Internet
usr-local-
5
Yah ... isso não é verdade. Existem documentos de rastreamento de padrões e documentos de rastreamento não-padrão (informativos). Todo o processo, incluindo descrições, processos e regras para documentos emitidos pela IETF é definido pela RFC2026, com algumas alterações posteriores. Cada RFC especificará no início em que faixa está.
Steve Buraco
31

Nos dados de engenharia, é comum ver o #símbolo na primeira coluna usada para sinalizar um comentário.

Eu uso a biblioteca de análise CSV ostermiller para ler e processar esses arquivos. Essa biblioteca permite que você defina o caractere de comentário. Após a operação de análise, você obtém uma matriz contendo apenas os dados reais, sem comentários.

Pedro_Uno
fonte
30

Não, o CSV não especifica nenhuma maneira de marcar comentários - eles serão carregados apenas por programas como o Excel como células adicionais contendo texto.

O mais próximo que você pode gerenciar (com o CSV sendo importado para um aplicativo específico como o Excel) é definir uma maneira especial de marcar comentários que o Excel ignorará. Para o Excel, você pode "ocultar" o comentário (em um grau limitado) incorporando-o a uma fórmula. Por exemplo, tente importar o seguinte arquivo csv para o Excel:

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

Você ainda acaba com uma célula na planilha que exibe o número 0, mas o comentário está oculto.

Como alternativa, você pode ocultar o texto preenchendo-o com espaços, para que ele não seja exibido na parte visível da célula:

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

Observe que você precisa seguir o texto do comentário com uma vírgula para que o Excel preencha a célula a seguir e oculte qualquer parte do texto que não couber na célula.

Hackes desagradáveis, que só funcionam com o Excel, mas podem ser suficientes para fazer com que sua saída pareça um pouco mais organizada após a importação.

Jason Williams
fonte
6

Eu acho que a melhor maneira de adicionar comentários a um arquivo CSV seria adicionar um campo "Comentários" ou gravar diretamente nos dados.

A maioria dos aplicativos de análise de CSV que eu usei implementa o mapeamento de campo e a escolha de registros. Portanto, para comentar sobre as propriedades de um campo, adicione um registro apenas para descrições de campo. Para comentar um registro, adicione um campo no final dele (bem, todos os registros, na verdade) apenas para comentários.

Essas são as duas únicas razões pelas quais posso pensar em comentar um arquivo CSV. Mas o único problema que posso prever seria programas que se recusam a aceitar o arquivo, se algum registro único não passar em algumas regras de validação. Nesse caso, você terá problemas para escrever um registro de descrição de campo do tipo string para qualquer campo numérico.

No entanto, não sou um especialista, portanto, sinta-se à vontade para apontar quaisquer erros em minha teoria.

Tyler Mumford
fonte
2
E acabei de ler que você não queria personalizar o processo de importação. Desculpa aí. Espero que alguém ache isso útil, então.
Tyler Mumford
1
Bom post. Outro motivo pelo qual você pode querer comentários é adicionar alguns metadados sobre o arquivo como um todo. Ao adicionar uma coluna ou linha inteira apenas para uma célula com essas informações, isso parece um pouco estranho.
Ben Hershey
3

Um arquivo separado por vírgula é realmente apenas um arquivo de texto em que as linhas consistem em valores separados por vírgulas.

Não há um padrão que defina o conteúdo de um arquivo CSV; portanto, não há uma maneira definida de indicar um comentário. Depende do programa que estará importando o arquivo CSV.

Claro, isso geralmente é Excel. Você deve se perguntar como o Excel define um comentário? Em outras palavras, o que faria o Excel ignorar uma linha (ou parte de uma linha) no arquivo CSV? Eu não estou ciente de nada que faria isso.

pavium
fonte
2
There is no standard which defines the contents of a CSV file Falso.
Qix - MONICA FOI ERRADA EM 10/10
5
@Qix - da seção 2 do documento mencionado: "Embora existam várias especificações e implementações para o formato CSV (por ex. [4], [5], [6] e [7]), não há especificação formal em existência "
Alien Technology
3

Se você estiver analisando o arquivo com um comando FOR em um arquivo em lotes, um ponto-e-vírgula funcionará (;)

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!

RESULTADO:

2, parse this line, yes it should!

4, parse this line, yes it should!
Ken Bob Saxton
fonte
1
!! Você é o verdadeiro Barefoot Ken Bob?
Geoffrey Hale
2

Se você precisar de algo como:

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

Seu CSV pode conter as seguintes linhas:

"#My comment, something else"
1,2

Preste muita atenção nas 'aspas' na primeira linha.

Ao converter seu texto em colunas usando o assistente do Excel, lembre-se de marcar 'Tratar delimitadores consecutivos como um', configurando-o para usar 'aspas' como delimitador.

Assim, o Excel dividirá o texto com vírgulas, mantendo a linha 'comment' como um valor de coluna única (e removerá as aspas).

Rogerio Granato
fonte