Ao tentar descobrir como abrir CSVs corretamente no Excel em um PC em espanhol (pertencente a um cliente), encontrei muitas respostas recomendando o uso sep=,
na parte superior do arquivo:
- A maneira mais fácil de abrir o CSV com vírgulas no Excel
- Como controlar a importação de CSV para o Excel 2010
- Como abrir arquivos CSV delimitados por ponto e vírgula na versão US do Excel
- Espaço ou tabulações como separador em CSV
- Como fazer com que o Excel interprete a vírgula como um delimitador padrão em arquivos CSV?
Aparentemente, essa abordagem funciona, mas nenhuma dessas respostas fornece mais informações sobre de onde vem essa opção de metadados. Tentei procurar o que significa (e, portanto, encontrei todas essas respostas), mas não consegui obter mais informações, especialmente porque a pontuação é notoriamente difícil de procurar.
Minha principal preocupação é se esse é um recurso específico do Excel . Eu suspeito que seja, mas não encontrei nada definitivo para confirmá-lo.
Algumas questões relacionadas são:
- Quais caracteres podem ser usados nessa configuração?
- Quais outras configurações estão disponíveis (por exemplo, caractere de terminação de linha, caractere de citação, etc.).
- Existem outras ferramentas que suportam oficialmente esse recurso?
Espero que exista uma documentação em algum lugar em que alguém possa me indicar que responda a todas essas perguntas e muito mais; Só não consegui encontrá-lo.
Alguns esclarecimentos:
O sep=
não é um parâmetro para um analisador. Ele deve ser colocado dentro do CSV. Exemplo:
sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
fonte
Respostas:
O RFC 4180 é geralmente reconhecido como o padrão para o formato CSV e não menciona nenhum desses recursos.
O modelo W3C para dados tabulares e metadados na Web o menciona como um recurso que não está dentro do seu escopo:
Portanto, embora eu não tenha encontrado nenhuma prova direta de que esse recurso seja específico do Excel, isso aparentemente ainda é o caso, pois parece não haver um documento de padronização que cubra esse recurso.
fonte
Para contribuir com uma resposta a uma de suas perguntas: "Existem outras ferramentas que suportam oficialmente esse recurso?"
Isso não é suportado pelo Apple Numbers (eu testei usando o Numbers versão 3.6.2).
Também não é suportado pelo csv2json ( https://www.npmjs.com/package/csv2json ) nem pelo csvtojson ( https://www.npmjs.com/package/csvtojson ).
fonte
A instrução sep = é usada em todos os países onde a vírgula é usada como delimitador decimal, como a Itália. Como o Excel exporta CSV usando ponto-e-vírgula em vez de vírgulas nesses países, se você quiser ter certeza de que o arquivo pode ser lido nos EUA ou em outros países, PRECISA
sep =;
em cima do arquivo. Isso é específico do Excel e pode ser ignorado por outros aplicativos.
fonte
Praticamente qualquer ferramenta que possa importar arquivos .csv reconhece que a vírgula não é o único separador possível; as guias são comuns há muito tempo, por exemplo. Eu acho que isso remonta aos dias dos cartões perfurados, que é necessário que haja algum caractere reconhecido como final do campo de dados - com exceção dos sistemas que usam campos de largura fixa ou campos prefixados de comprimento, praticamente todos os sistemas precisam disso desde o advento dos computadores.
Os três itens essenciais são um separador de campos, um separador de registros e um marcador de fim de dados. O csv, por padrão, usa vírgula, nova linha e final de arquivo para eles, respectivamente, mas praticamente qualquer entrada válida pode ser usada; no entanto, você precisa de um mecanismo para escapar dos marcadores especiais se eles ocorrerem nos seus dados válidos.
Um sistema histórico que encontrei usava nova linha para final de campo, 2 linhas em branco para final de registro e
*!*!* END *!*!*
para o final dos dados. Geralmente, me deparei com todos os,\t|:
usados como separador de campos, além de vários caracteres de controle.Uma coisa a ser cautelosa é que os franceses e outros usam vírgula como ponto decimal - isso pode causar todo tipo de diversão e jogos. Há um grau de padronização para arquivos csv no rfc4180, mas há momentos em que você precisa editar manualmente os arquivos ao exportar de um programa e importar para outro.
Para responder à segunda parte da sua pergunta, o Python, por exemplo, inclui um leitor / gravador csv como uma das bibliotecas padrão que oferece as seguintes opções:
delimiter
- Este é o separador de campos (a menos que tenha escapado).doublequote
- Se verdadeiro, um"
dentro de um campo será representado como""
escapechar
- remove qualquer significado especial de qualquer caractere a seguir, por exemplo, se estiver definido como\
, as aspas podem ser representadas como\"
lineterminator
- normalmente um dos\n
,\r
,\r\n
ou\n\r
quotechar
- caractere usado para citar strings, geralmente"
ou'
quoting
- sinalizar como um dos seguintes:ALL
- Cada campo está entre aspas, ou seja:"1","Free Beer","ASAP"
MINIMAL
- Apenas cite campos com caracteres especiais, ou seja:1,"Beer, (Free)", Now, Please
QUOTE_NONNUMERIC
- Cite qualquer coisa que não seja um número, ou seja:1,"Beer, (Free)", "Now", "Please"
NONE
- Não cite escape, ou seja:1,Beer\, (Free), Now, Please
skipinitialspace
- pule qualquer espaço à esquerda de cada campo para poder usá-lo,
e não apenas,
como um separador de campos.Geralmente, a ferramenta mais flexível e bem pensada que pode importar arquivos csv é a mais dessas opções (possivelmente com nomes e / ou mecanismos diferentes) que ela terá.
fonte
sep=
não é um parâmetro para um analisador. Eu adicionei alguns esclarecimentos à minha pergunta.sep=
é e de onde vem.