Como ler e criar arquivos CSV usando Python

Como ler e criar arquivos CSV usando Python

CSV é o acrônimo de "valores separados por vírgula". Um arquivo CSV é um documento de texto simples usado para representar e trocar dados tabulares. Cada linha em um arquivo CSV representa uma "entidade", e cada coluna representa um atributo. As colunas geralmente são separadas por uma vírgula, mas outros personagens podem ser usados ​​como separador de campo em vez disso. Neste tutorial, veremos como ler e criar arquivos CSV usando Python e especificamente o CSV módulo, que faz parte do
Biblioteca padrão de idiomas.

Neste tutorial, você aprenderá:

  • Como ler linhas CSV como uma lista de strings
  • Como ler um CSV como uma lista de dicionários
  • Como criar um CSV usando Python
  • Como criar um CSV a partir de uma lista de dicionários
Como ler e criar arquivos CSV usando Python

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Distribuição Independente
Programas Python3
Outro Conhecimento básico da programação Python e Oriented
Convenções # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

CSV - Valor separado por vírgula

Como já mencionamos na introdução deste tutorial, um CSV é apenas um arquivo de texto simples simples, formatado de uma maneira que vamos representar e trocar dados tabulares. Cada linha em um arquivo CSV representa algum tipo de entidade, exceto o
primeira linha que geralmente contém os títulos de campo. Vamos ver um exemplo. Suponha que queremos representar personagens do Livro do Senhor dos Anéis em formato CSV:

Nome, Race Frodo, Hobbit Aragorn, Man Legolas, Elf Gimli, Dwarf 

O acima é um exemplo trivial do conteúdo de um arquivo CSV. Como você pode ver, usamos o , (vírgula) como separador de campo. Salvamos esses dados em um arquivo chamado LOTR.CSV. Vamos ver como podemos lê -lo usando a programação Python
linguagem e o CSV módulo.

Lendo um arquivo CSV

Para interagir com um arquivo CSV com Python, a primeira coisa que temos que fazer é importar o CSV módulo. Vamos escrever um script simples, apenas algumas linhas de código:

#!/usr/bin/Env Python3 Importar CSV se __name__ == '__main__': com open ('lotr.csv ', newline = ") como csvfile: leitor = csv.leitor (csvfile) para linha no leitor: print (linha) 


Neste exemplo, supomos que o script que criamos acima (vamos chamá -lo roteiro.py) está no mesmo diretório do arquivo CSV e o referido diretório é o nosso funcionamento atual.

A primeira coisa que fizemos foi importar o CSV módulo; Em seguida, abrimos o arquivo no modo de leitura (o padrão) com um gerente de contexto, para que tenhamos certeza de que o objeto de arquivo está sempre fechado sempre que os intérpretes existirem o com bloco, mesmo que algum tipo de erro ocorra. Você também pode notar que usamos o nova linha argumento do abrir função para especificar uma string vazia como o personagem Newline. Esta é uma medida de segurança, pois, como declarado no CSV módulo
documentação:

Se newline = "não for especificado, as novas linhas incorporadas dentro de campos citados não serão interpretados corretamente e em plataformas que usam \ r \ n line finais na escrita um extra \ r será adicionado. Deve sempre ser seguro especificar newline = ", pois o módulo CSV faz seu próprio (universal) novo manuseio.

O CSVFILE objeto representa nosso arquivo aberto: passamos como argumento para o CSV.leitor função que retorna um objeto de leitor que fazemos referência através do csv_reader variável. Usamos esse objeto para iterar em cada linha do arquivo, que é retornada como uma lista de strings. Nesse caso, apenas os imprimimos. Se executarmos o script, obtemos o seguinte resultado:

$ ./roteiro.py ['nome', 'raça'] ['Frodo', 'Hobbit'] ['Aragorn', 'Man'] ['Legolas', 'Elf'] ['Gimli', 'Dwarf'] 

Isso foi bem fácil, não foi? E se um personagem que não seja a vírgula for usado como um separador de campo? Nesse caso, poderíamos usar delimitador parâmetro da função e especifique o caractere que deve ser usado. Vamos dizer que o personagem disse é |. Nós escrevíamos:

csv_reader = csv.leitor (csvfile, delimiter = "|") 
cópia de

Leia os campos CSV em um dicionário

O que usamos acima é provavelmente a maneira mais fácil que podemos usar para ler um arquivo CSV com Python. O CSV módulos define também o Dictreader classe, que vamos mapear cada linha em um arquivo CSV para um dicionário, onde as chaves são os nomes de campo e os valores são o conteúdo real em uma linha. Vamos ver um exemplo. Aqui está como modificamos nosso script:

#!/usr/bin/Env Python3 Importar CSV se __name__ == '__main__': com open ('lotr.csv ', newline = ") como csvfile: leitor = csv.DiCtreader (CSVFile) para linha no leitor: print (linha) 
cópia de

O Dictreader Classe Constructor Primeiro argumento obrigatório é o objeto de arquivo criado quando abrimos o arquivo. Se lançarmos o script, desta vez obtemos o seguinte resultado:

'Nome': 'Frodo', 'Race': 'Hobbit' 'Nome': 'Aragorn', 'Race': 'Man' 'Name': 'Legolas', 'Race': 'Elf'  'Name': 'gimli', 'raça': 'anão' 

Como já foi dito, os campos contidos na primeira linha são usados ​​como teclas de dicionário; Mas e se a primeira linha do arquivo não contiver os nomes de campo? Nesse caso, podemos especificá -los usando o FieldNames parâmetro do Dictreader Construtor de classe:

leitor = csv.Dictreader (CSVFile, FieldNames = ['Nome', 'Race]) 
cópia de

Crie um arquivo CSV

Até agora, vimos como ler dados de um arquivo CSV, ambos como uma lista de strings cada uma representando uma linha e como um dicionário. Agora vamos ver como criar o arquivo CSV. Como sempre, começamos com um exemplo, e então explicamos. Imagine que queremos criar programaticamente o arquivo CSV que criamos manualmente antes. Aqui está o código que escrevíamos:

#!/usr/bin/Env Python3 Importar CSV se __name__ == '__main__': com open ('lotr.csv ',' w ', newline = ") como csvfile: writer = csv.Escritor (CSVFile) para Row in (('Nome', 'Race'), ('Frodo', 'Hobbit'), ('Aragorn', 'Man'), ('Legoals', 'Elf'), (' Gimli ',' anão ')): escritor.Writertow (linha) 


A primeira coisa que você deve notar é que desta vez abrimos o LOTR.CSV arquivo no modo de gravação (c). Neste modo, um arquivo é criado se não existir e for truncado Caso contrário (verifique nosso artigo sobre como executar operações de entrada/saída em arquivos com Python se quiser saber mais sobre esse assunto).

Em vez de um leitor objeto, desta vez criamos um escritor um, usando o escritor função fornecida no CSV módulo. Os parâmetros que essa função aceita são muito semelhantes aos aceitos pelo leitor um. Poderíamos, por exemplo, especificar um delimitador alternativo usando o parâmetro com o mesmo nome.

Como neste caso, já conhecemos todas as linhas do CSV de antemão, podemos evitar o uso de um loop e escrever todas elas de uma só vez usando o Writerws Método do objeto do escritor:

#!/usr/bin/Env Python3 Importar CSV se __name__ == '__main__': com open ('lotr.csv ',' w ', newline = ") como csvfile: writer = csv.escritor (CSVFile) escritor.Writerws ((('Nome', 'Race'), ('Frodo', 'Hobbit'), ('Aragorn', 'Man'), ('Legolas', 'Elf'), ('Gimli', 'Dwarf '))) 

Crie um arquivo CSV com o objeto Dictwriter

O CSV O módulo fornece a Dictwriter classe, que vamos mapear um dicionário para uma linha CSV. Isso pode ser muito útil quando os dados em que estamos trabalhando são assim e desejam representá -los em forma tabular. Vamos ver um exemplo.
Suponha que os dados dos caracteres do LOTR sejam representados como uma lista de dicionários (talvez como seriam devolvidos de uma chamada de API feita com o solicitações de módulo). Aqui está o que poderíamos escrever para criar um CSV com base nele:

#!/usr/bin/Env python3 Importar CSV caracteres_data = ['name': 'frodo', 'race': 'hobbit', 'name': 'aragorn', 'race': 'man', ' Nome ':' Legolas ',' Race ':' Elf ', ' Name ':' Gimli ',' Race ':' Dwarf '] se __name__ ==' __main__ ': com open (' LOTR.CSV ',' W ') como CSVFile: Writer = CSV.DictWriter (CSVFile, FieldNames = ('Nome', 'Race')) Writer.WriteHeader () Writer.Writerws (caracteres_data) 
cópia de

Vamos ver o que fizemos. Primeiro, criamos uma instância do Dictwriter classe, passando como argumentos o objeto de arquivo (CSVFILE) e então FieldNames, que deve ser uma sequência de valores a serem usados ​​como nomes de campo do CSV e determina em que ordem os valores contidos em cada dicionário devem ser gravados no arquivo. Enquanto no caso do Dictreader Construtor de classe Este parâmetro é opcional, aqui é obrigatório e é fácil entender por que.

Depois de criar o escritor objeto, chamamos de seu WriteHeader Método: Este método é usado para criar a linha inicial do CSV, contendo os nomes de campo que passamos no construtor.

Finalmente, chamamos o Writerws método para escrever todas as linhas do CSV de uma só vez, passando a lista de dicionários como argumento (aqui os referenciamos pelo caracteres_data variável). Tudo feito!

Conclusões

Neste artigo, aprendemos o básico da leitura e criação de arquivos CSV usando a linguagem de programação Python. Vimos como ler as linhas de um arquivo CSV, tanto como uma lista de strings quanto em um dicionário usando um Dictreader objeto, e como criar um novo arquivo CSV escrevendo uma linha na época, ou todas as linhas de uma vez. Finalmente, vimos como criar um arquivo CSV a partir de uma lista de dicionários, como poderia ser devolvido de uma chamada de API. Se você quiser saber mais sobre o CSV Módulo Python, consulte a documentação oficial.

Tutoriais do Linux relacionados:

  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Mastering Bash Script Loops
  • Loops aninhados em scripts de basquete
  • Coisas para instalar no Ubuntu 20.04
  • Como manipular planilhas do Excel com Python e…
  • Como formatar dados com coluna no Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Manipulação de big data para diversão e lucro Parte 1
  • Manipulação de big data para diversão e lucro Parte 2
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux