Gravando em um arquivo CSV usando DictWriter
Vamos gravar os seguintes dados em nosso arquivo CSV. Ele contém informações sobre três estados diferentes dos EUA em uma lista com elementos individuais sendo um dicionário.
state_info = [ { "Name": "Colorado", "Largest City": "Denver", "Capital City": "Denver", "Population": "5773714" }, { "Name": "Connecticut", "Largest City": "Hartford", "Capital City": "Bridgeport", "Population": "3605944" }, { "Name": "Delaware", "Largest City": "Dover", "Capital City": "Wilmington", "Population": "989948" } ]
O código é como mostrado abaixo.
import csv fields = ['Name', 'Capital City', 'Largest City', 'Population']; with open('state-data.csv', 'a', newline="") as state_file: writer = csv.DictWriter(state_file, fields) writer.writerows(state_info)
Primeiro definimos os nomes dos campos como uma lista e os armazenamos em fields
variável. Isso permite que o writer
objeto saiba qual seria o cabeçalho de cada coluna no arquivo CSV. o writerows()
O método gravará todas as linhas que fornecemos a ele de uma só vez no arquivo CSV. A única condição para writerows()
é que as linhas que queremos escrever são iteráveis.
Cada linha individual também deve ser iterável de strings ou números se usarmos o writer()
função como fizemos no exemplo anterior. Caso contrário, cada linha deve ser um dicionário que mapeia fieldnames
para strings ou números para o DictWriter
classe para processá-lo.
Vamos tentar gravar os seguintes dados em nosso arquivo CSV agora:
state_info = [ { "Name": "Florida", "Capital City": "Tallahassee" }, { "Name": "Georgia", "Area": "153910", "Largest City": "Atlanta", "Population": "10711908", "Capital City": "Atlanta", } ]
Há duas coisas dignas de nota sobre os dados acima. Primeiro, nosso estado da Flórida está faltando algumas informações. Segundo, o estado da Geórgia tem algumas informações extras com base no que estamos armazenando na tabela. Terceiro, as chaves do estado da Geórgia não estão na ordem em que definimos os campos para nosso arquivo CSV.
Como podemos lidar com dados não padronizados como esse? o DictWriter
classe oferece uma solução. Para chaves ausentes, podemos simplesmente fornecer um valor padrão usando o restval
parâmetro. Ele é definido como uma string vazia por padrão. No entanto, você também pode especificar um valor personalizado, como Desconhecido. Para chaves extras, você pode usar o extrasaction
parâmetro para dizer DictWriter
ignorar essas chaves. Este parâmetro irá gerar um ValueError
por padrão.
Aqui está como gravar em todas as linhas de uma só vez.
import csv fields = ['Name', 'Capital City', 'Largest City', 'Population'] with open('state-data.csv', 'a', newline="") as state_file: writer = csv.DictWriter(state_file, fields, restval="Unknown", extrasaction='ignore') writer.writerows(state_info)
Nosso arquivo CSV ficará assim após todas as operações de escrita:
Conclusão
Este tutorial cobriu a maior parte do que é necessário para ler e gravar com sucesso em um arquivo CSV usando as diferentes funções e classes fornecidas pelo Python. Os arquivos CSV têm sido amplamente usados em aplicativos de software porque são fáceis de ler e gerenciar e seu tamanho pequeno os torna relativamente rápidos para processar e transferir.
Aprenda Python
Aprenda Python com nosso guia tutorial completo sobre Python, seja você apenas começando ou um programador experiente procurando aprender novas habilidades.
Este post foi atualizado com contribuições de Monty Shokeen. Monty é um desenvolvedor full-stack que também adora escrever tutoriais e aprender sobre novas bibliotecas JavaScript.