Extrair dados do csv

0

amigos! Eu tenho um arquivo csv enorme e eu preciso extrair linhas com cabeçalhos onde coluna chamada "data.status" é igual a "completa", em seguida, excluir colunas vazias a partir dele e gravar em outro arquivo csv. Posso alcançá-lo com o grep? sed | awk? Obrigado por respostas!

EDIT 1. Eu crio este csv de aplainar cerca de 60.000 arquivos json e gravar dados deles em um csv. E eu realmente não sei a contagem real do cabeçalho e nem consigo abrir (tamanho do arquivo csv de cerca de 1,5 Gb). Mas tem muito campo vazio e eu quero apagá-los e torná-lo mais legível. Como exemplo eu tenho csv:

date.status, date.start, date.end, date.items

sem sucesso, 21-03-15, 25-03-15, some_item

completo , item2

A saída deve se parecer com:

date.status, date.items

completo, item2

    
por yshalenyk 15.03.2016 / 17:49

1 resposta

2

Você pode fazer hacks com grep / sed / awk, mas não é trivial implementar um analisador de CSV, então eu recomendaria apenas usá-los para hacks rápidos (por exemplo, você teria que considerar todos os tipos de escape especial / citando cenários).

Se você quiser fazer isso, sugiro usar um analisador de CSV real e maduro, como o fornecido no stdlib do Python:

import csv

with open('your.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    kept_rows = (row for row in reader if row['data.status'] == 'complete')

Você pode então escrever as novas linhas usando um DictWriter .

    
por 15.03.2016 / 17:56

Tags