Dados e planilhas · CSV Limpador
Como funciona a detecção de delimitadores CSV: vírgulas, ponto e vírgula, tabulações e barras verticais
· Como funciona
csv limpeza de dados formatos de arquivo
Um arquivo CSV nunca diz qual caractere separa seus campos, então o software precisa adivinhar. Esta postagem explica como funciona a detecção do delimitador, por que falha em arquivos complicados e como tornar o delimitador explícito.
Um arquivo que abre como uma coluna longa — por que o delimitador não está armazenado em nenhum lugar em um CSV
Um analista de dados abre uma exportação .csv e vê um campo longo em cada linha. A extensão não informa ao leitor qual separador foi usado e o arquivo geralmente não contém declaração de delimitador. Um aplicativo que assume vírgulas lerá um cabeçalho separado por ponto e vírgula, como nome;cidade;notas, como uma única coluna. Antes de alterar os valores, pergunte qual caractere realmente divide os campos e se o importador tem uma maneira de substituir sua estimativa.
Os quatro candidatos suportados: vírgula, ponto e vírgula, tabulação e barra vertical
ToolAcre considera vírgula, ponto e vírgula, tabulação e barra vertical como candidatos. Um ponto e vírgula é comum quando vírgulas já são usadas como separadores decimais, tabulações evitam colisões de pontuação em exportações simples e pipes às vezes separam dumps de log ou de banco de dados. O espaço não está entre as escolhas automáticas da ferramenta: nomes e células de texto livre geralmente contêm espaços. Não adicione um candidato apenas porque ele ocorre com frequência no texto de exemplo; um separador deve dividir as linhas em campos consistentes.
Como funciona o sniffing — contando caracteres candidatos por linha e preferindo aquele que fornece uma contagem consistente de campos entre linhas
A implementação remove uma marca inicial de ordem de bytes UTF-8 e analisa uma amostra de até dez linhas com cada candidato. Ele registra as larguras dessas linhas e rejeita qualquer candidato que nunca produza pelo menos duas colunas. Um candidato tem pontuação mais alta quando produz mais colunas de forma consistente nas linhas; larguras inconsistentes são penalizadas duas vezes na pontuação. Crucialmente, a análise observa os campos entre aspas, portanto, uma vírgula dentro de um endereço entre aspas não conta como limite de campo. Isso difere da contagem ingênua de caracteres e é por isso que uma coluna de endereço confusa não precisa anular a detecção.
Onde a detecção falha: colunas de texto livre cheias de vírgulas, arquivos de coluna única e campos entre aspas que ocultam o verdadeiro separador
Nenhuma suposição é infalível. Um arquivo muito curto tem poucas evidências, um CSV genuinamente de uma coluna não tem nenhum candidato que se divida em dois e citações malformadas podem fazer com que várias análises de candidatos pareçam irregulares. Uma coluna de texto livre preenchida com separadores pode competir com o delimitador real quando as aspas são quebradas. Separadores mistos entre linhas não são um dialeto CSV limpo. A ferramenta relata avisos de análise e expõe a seleção manual de delimitadores; um usuário que conhece a convenção de exportação upstream pode substituir a escolha inferida em vez de fingir que a heurística é uma especificação.
Exemplo resolvido - uma exportação separada por ponto e vírgula com vírgulas dentro de endereços, mostrando por que uma contagem ingênua escolhe o caractere errado
Experimente uma pequena amostra com cabeçalho name;city;note e uma linha Ada;Paris;"Reunião em 10, perto da estação". A contagem de vírgulas brutas pode favorecer erroneamente a vírgula porque a nota contém pontuação, especialmente em várias dessas linhas. O analisador de ponto e vírgula retorna três campos em ambas as linhas; o analisador de vírgula não fornece a mesma estrutura retangular. Confirme se a visualização mostra o nome, a cidade e a nota como colunas separadas antes de cortar, desduplicar ou exportar. Se uma linha de origem tiver uma cotação não fechada, inspecione essa linha em vez de descartá-la silenciosamente para melhorar a pontuação.
Escolhendo o delimitador de saída — combinando o separador com o programa e localidade que irá ler o próximo arquivo
O separador de entrada e o separador de saída são decisões diferentes. Você pode importar um arquivo de ponto e vírgula europeu, mas exportar texto separado por vírgula no estilo RFC para um programa que espera vírgulas. Um escritor correto cita campos contendo o delimitador de saída, aspas incorporadas ou quebras de linha. Decida se o seu destinatário precisa de um UTF-8 BOM antes de fazer o download; alguns aplicativos de planilha usam um para reconhecer a codificação, enquanto muitos analisadores desejam o arquivo sem ele. Verifique o cabeçalho baixado no programa de destino, não apenas a visualização do navegador.
O que isso não cobre — arquivos que misturam delimitadores entre linhas e exportações de largura fixa que não usam nenhum delimitador
A detecção não pode reparar um arquivo que altera o separador no meio, nem pode inferir colunas em uma exportação de largura fixa onde não existe delimitador. Ele não sabe se uma vírgula entre aspas se referia a um endereço ou a um erro de entrada de dados: ela segue a sintaxe, não o significado. O limpador CSV irá trazer à tona linhas irregulares e preservar seus valores, em vez de adivinhar como excluir os dados de um cliente. Use sua visualização e avisos para diagnosticar um problema no sistema de origem antes de executar etapas de limpeza irreversíveis.
Torne o delimitador explícito em vez de esperar - como o reparo do delimitador do limpador ToolAcre CSV produz um arquivo com um separador consistente
Uma estimativa de delimitador é uma análise baseada em evidências de algumas linhas, não uma promessa escrita dentro do arquivo CSV. CSV Cleaner implementa-o localmente em seu navegador, permite escolher um separador diferente e grava um dialeto de saída consistente. Se um assistente de importação adivinhar algo diferente na próxima semana, registre a convenção de saída ao lado do arquivo para que o próximo leitor não precise redescobri-lo.