Como 'cortar' (extrair um subconjunto de colunas) um arquivo CSV que contenha strings entre aspas '

2

Eu tenho um arquivo CSV e quero descartar algumas colunas. Então, digamos que este seja um arquivo de amostra:

column a, column b, column c
value  a, value  b, value  c
value  a, "quoted, b", value c

E agora, digamos que queremos descartar a coluna b, para que o resultado seja:

column a, column c
value  a, value  c
value  a, value c

Se não houvesse a string entre aspas "quoated, b" eu poderia fazer isso com cut :

cut -d ',' -f 1,3

No entanto, há essa string entre aspas. Eu poderia apenas carregar o arquivo com o libreoffice, mas além de ser menos legal e automatizável, meus arquivos são vários hundered MB e alguns até excedem o número máximo de linhas para o LibreOffice Calc.

(Nota lateral: meus arquivos reais têm mais de 30 colunas e eu gostaria de selecionar cerca de 5-10 colunas deles. Portanto, não é como "descartar a última coluna")

    
por yankee 25.06.2016 / 10:33

1 resposta

3

Se você pode instalar python e easy_install, você também pode instalar o csvkit : link

E agora você pode executar um comando simples como o seguinte para selecionar apenas as colunas 1 e 3:

csvcut -c 1,3 original_file.csv > new_file.csv

Ou, outro exemplo, para REMOVER a segunda coluna:

csvcut -C 2 original_file.csv > new_file.csv

..

NOTA:

Apenas uma palavra de aviso, seu CSV parece inválido . A menos que você queira ter um caractere de espaço em seus dados, você NÃO DEVE ter um espaço após a vírgula / delimitador. Um caractere de espaço fará parte dos dados e poderá atrapalhar o texto citado.

Como esses dados são gerados? Pode ser gerado sem os espaços extras? Por exemplo. column a,column b,column c

    
por 25.06.2016 / 13:35

Tags