| title | Módulo CSV do Python - Folha de Dicas Python |
|---|---|
| description | O Python possui um módulo csv, que permite trabalhar facilmente com arquivos CSV. |
O módulo csv fornece ferramentas para ler e escrever em arquivos CSV, que são comumente usados para troca de dados.
open() com read ou write e split()), o módulo csv foi projetado para lidar com casos extremos, como campos entre aspas, delimitadores incorporados e diferentes quebras de linha. Ele garante compatibilidade com arquivos CSV gerados por outros programas (como Excel) e reduz o risco de erros de análise. Para a maioria das tarefas CSV, prefira o módulo csv em vez da análise manual.
Para mais informações sobre os fundamentos do manuseio de arquivos, consulte a página File and directory Paths.
Para começar, importe o módulo:
import csvEsta função recebe um arquivo que deve ser um iterável de strings. Em outras palavras, deve ser o arquivo aberto, pois segue este formato:
import csv
file_path = 'file.csv'
# Ler arquivo CSV
with open(file_path, 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
# Iterar sobre cada linha
for line in reader:
print(line)Esta função retorna um objeto leitor que pode ser facilmente iterado para obter cada linha. Cada coluna nas linhas correspondentes pode ser acessada pelo índice, sem a necessidade de usar a função embutida split().
Esta função recebe o arquivo a ser escrito como um arquivo csv. Semelhante à função leitor, ela deve ser invocada desta forma:
import csv
file_path = 'file.csv'
# Abrir arquivo para escrita CSV
with open(file_path, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# fazer algoO bloco "fazer algo" pode ser substituído pelo uso das seguintes funções:
Escreve uma única linha no arquivo CSV.
# Escrever linha de cabeçalho
writer.writerow(['name', 'age', 'city'])
# Escrever linha de dados
writer.writerow(['Alice', 30, 'London'])Escreve múltiplas linhas de uma vez.
# Preparar múltiplas linhas
rows = [
['name', 'age', 'city'],
['Bob', 25, 'Paris'],
['Carol', 28, 'Berlin']
]
# Escrever todas as linhas de uma vez
writer.writerows(rows)Permite ler arquivos CSV e acessar cada linha como um dicionário, usando a primeira linha do arquivo como chaves (cabeçalhos de coluna) por padrão.
import csv
# Ler CSV como dicionário (primeira linha se torna chaves)
with open('people.csv', 'r', newline='') as csvfile:
reader = csv.DictReader(csvfile)
# Acessar colunas pelo nome em vez de índice
for row in reader:
print(row['name'], row['age'])-
Cada
rowé umOrderedDict(ou umdictregular no Python 3.8+). -
Se o seu CSV não tiver cabeçalhos, você pode fornecê-los com o parâmetro
fieldnames:reader = csv.DictReader(csvfile, fieldnames=['name', 'age', 'city'])
Permite escrever dicionários como linhas em um arquivo CSV. Você deve especificar os fieldnames (cabeçalhos de coluna) ao criar o escritor.
import csv
fieldnames = ['name', 'age', 'city']
rows = [
{'name': 'Alice', 'age': 30, 'city': 'London'},
{'name': 'Bob', 'age': 25, 'city': 'Paris'}
]
# Escrever dicionários em CSV
with open('people_dict.csv', 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # escreve a linha de cabeçalho
writer.writerows(rows)- Use
writer.writeheader()para escrever os cabeçalhos das colunas como a primeira linha. - Cada dicionário em
writer.writerows()deve ter chaves que correspondam aosfieldnamesespecificados ao criar o escritor.
Deve ser o caractere usado para separar os campos. Como o tipo de arquivo indica, o padrão é a vírgula ','. Dependendo da localidade, o Excel pode gerar arquivos csv com o ponto e vírgula como delimitador.
import csv
# Ler CSV com delimitador ponto e vírgula
with open('data_semicolon.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
for row in reader:
print(row)Caractere ou sequência de caracteres para terminar uma linha. O mais comum é "\r\n", mas pode ser "\n".
Caractere usado para colocar entre aspas campos que contêm caracteres especiais (o padrão é ").
# Usar aspas simples como caractere de citação
reader = csv.reader(csvfile, quotechar="'")Para mais detalhes, consulte a documentação oficial do módulo csv do Python.