Eu estava lendo este artigo e estou curioso para saber a resposta adequada a essa pergunta.
A única coisa que me vem à cabeça é que talvez em alguns países o separador decimal seja uma vírgula e possa haver problemas ao compartilhar dados em CSV , mas não tenho certeza da minha resposta.
project-management
David Gasquez
fonte
fonte
Respostas:
A especificação do formato CSV é definida na RFC 4180 . Esta especificação foi publicada porque
Infelizmente, desde 2005 (data de publicação da RFC), nada mudou. Ainda temos uma grande variedade de implementações. A abordagem geral definida na RFC 4180 é incluir campos que contenham caracteres como vírgulas entre aspas; no entanto, essa recomendação nem sempre é atendida por diferentes softwares.
O problema é que, em várias localidades européias, o caractere vírgula serve como ponto decimal; portanto, você escreve em
0,005
vez de0.005
. No entanto, em outros casos, vírgulas são usadas em vez de espaços para sinalizar grupos de dígitos, por exemplo4,000,000.00
(veja aqui ). Nos dois casos, o uso de vírgulas possivelmente levaria a erros na leitura de dados de arquivos csv, porque o seu software realmente não sabe se0,005, 0,1
existem dois números ou quatro números diferentes (veja o exemplo aqui ).Por último, mas não menos importante, se você armazenar texto em seu arquivo de dados, as vírgulas serão muito mais comuns no texto do que, por exemplo, ponto-e-vírgula; portanto, se o texto não estiver entre aspas, esses dados também poderão ser facilmente lidos com erros .
Nada melhora as vírgulas ou os separadores de campo piores , na medida em que os arquivos CSV são usados de acordo com as recomendações da RFC 4180 que protegem os problemas descritos acima. No entanto, se houver o risco de usar o formato CSV simplificado que não inclua campos entre aspas ou se a recomendação puder ser usada de forma inconsistente, outros separadores (por exemplo, ponto e vírgula) parecerão uma abordagem mais segura.
fonte
,
vez de um separador mais raro incha os dados porque você precisa escapar deles o tempo todo é verdade. E, obviamente, existem todas aquelas pessoas que pensam que sabem como o CSV funciona, mas realmente não.Tecnicamente, vírgula é tão boa quanto qualquer outro caractere a ser usado como separador. O nome do formato refere-se diretamente a valores separados por vírgula (valores separados por vírgula).
A descrição do formato CSV está usando vírgula como separador.
Qualquer campo que contenha vírgula deve estar entre aspas duplas. Portanto, isso não causa problemas para a leitura de dados. Consulte o ponto 6 da descrição :
Por exemplo, as funções
read.csv
ewrite.csv
de R por padrão estão usando vírgula como separador.fonte
values
que são separados por vírgula. Outros aludindo aformatting
números europeus , isso não é um problema para o csvstandard
, como você citou corretamente o ponto 6 acima. Existem divergências no "uso correto" em qualquer formato de dados. O ponto é - conheça seus dados. Outros mencionamtab
ou;
delimitam, no entanto, estes podem ter os mesmos problemas que vírgulas quando você lida com dados inseridos pelo usuário (talvez por meio de um formulário e capturados por um banco de dados - eu tive que discutir com campos de entrada de texto livre que as pessoas ter gordura dedos emtab
... é uma porcaria)Além de ser um separador de dígitos em números, também faz parte do endereço (como endereço do cliente etc.) em muitos países. Enquanto alguns países têm endereços curtos e bem definidos, muitos outros têm endereços longos, incluindo, às vezes duas vírgulas na mesma linha. Arquivos CSV bons incluem todos esses dados entre aspas duplas. Mas analisadores muito simplistas e mal escritos não permitem ler e diferenciá-los. (Então, há o problema de usar aspas duplas como parte dos dados, como citações de um poema).
fonte
Enquanto a resposta do @Tim estiver correta - eu gostaria de acrescentar que "csv" como um todo não tem um padrão comum - especialmente as regras de escape não são definidas, levando a "formatos" que podem ser lidos em um programa, mas não em outro . Isso é exacerbado pelo fato de que todo "programador" sob o sol apenas pensa em "oooh csv- eu construirei meu próprio analisador!" e depois perde todos os casos extremos.
Além disso, o csv carece totalmente da capacidade de armazenar metadados ou mesmo o tipo de dados de uma coluna - levando a vários documentos que você deve ler para entender os dados.
fonte
Se você pode abandonar o delimitador de vírgula e usar um caractere de tabulação, terá muito mais sucesso. Você pode deixar o arquivo chamado .CSV e importar para a maioria dos programas geralmente não é um problema. Basta especificar delimitado por TAB em vez de vírgula ao importar seu arquivo. Se houver vírgulas em seus dados, você terá um problema ao especificar delimitado por vírgula, como você bem sabe.
fonte
|
como delimitador em arquivos de texto caseiros, como arquivos CSV (com títulos de livros e outros metadados de documentos).|
nunca ocorre nos dados com os quais trabalho, para que eu possa escrever scripts perl que simplesmente se dividem / se juntam sem verificar a citação de qualquer tipo. Isso foi para um projeto único que envolve apenas o processamento de metadados salvos de um banco de dados do MS Access. Para qualquer projeto maior, ou se você planeja manter os dados nesse formato de arquivo a longo prazo, escolha algo mais robusto! Eu sempre poderia ajustar alguma coisa se o lote deste mês quebrasse alguma coisa.split
comando para o Stata, observei, entre outras coisas, o equivalente Perl para ver o que ele fazia e o que não fazia. Não é o código fonte, apenas a funcionalidade oferecida.cut
,sort
euniq
.O ASCII nos fornece quatro caracteres "separadores", como mostrado abaixo em um trecho da página do manual ascii (7) * nix:
Esta resposta fornece uma visão geral decente do uso pretendido.
Certamente, esses códigos de controle carecem da facilidade humana (legibilidade e entrada) de delimitadores mais populares, mas são opções aceitáveis para troca interna e / ou efêmera de dados entre programas.
fonte
O problema não é a vírgula; o problema está sendo citado. Independentemente de quais delimitadores de registro e campo você usa, você precisa estar preparado para encontrá-los no conteúdo. Então você precisa de um mecanismo de cotação. E ENTÃO você precisa de uma maneira para os caracteres entre aspas aparecerem também.
Seguir o padrão RFC 4180 torna tudo mais simples para todos.
Pessoalmente, tive que escrever um script para provavelmente corrigir a saída de um programa que entendeu errado, por isso sou um pouco militante. "provavelmente consertar" significa que funcionou para MEUS dados, mas posso ver situações em que eles falhariam. (Em defesa desse programa, ele foi escrito antes do padrão.)
fonte