Como ler e analisar um arquivo CSV em Python
Aprenda como ler e analisar arquivos CSV em Python usando o módulo csv integrado. Domine a leitura como listas, leitores de dicionário e delimitadores personalizados.
Visão geral
CSV (valores separados por vírgula) é um formato de arquivo onipresente para armazenar conjuntos de dados tabulares. Seja importando bancos de dados, exportando planilhas ou baixando logs, a leitura de CSV é uma habilidade essencial. Python inclui um módulo `csv` integrado, dedicado e altamente otimizado para analisar arquivos CSV facilmente, sem a necessidade de bibliotecas de terceiros, como pandas.
A função `csv.reader` lê um arquivo linha por linha e o analisa, dividindo cada linha pelo delimitador de vírgula e retornando listas de strings. Se o seu arquivo CSV tiver uma linha de cabeçalho (por exemplo, rótulos de coluna), geralmente é preferível usar `csv.DictReader`. Ele analisa automaticamente cada linha em um dicionário onde as chaves são os rótulos das colunas, tornando o código muito mais legível e robusto a alterações na ordem das colunas.
Ao abrir arquivos CSV, é uma prática recomendada definir `newline=""` na instrução `open()`. Isso evita que o Python faça traduções automatizadas de novas linhas, o que pode levar a erros de análise em determinados sistemas operacionais. Além disso, sempre especifique `encoding="utf-8"` para lidar com caracteres especiais.
Saída de código e execução
Este script demonstra a gravação de um arquivo CSV de amostra e a leitura dele usando csv.reader e csv.DictReader.
import csv
# Writing a sample CSV file
sample_content = [
["name", "role", "salary"],
["Alice", "Developer", "90000"],
["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sample_content)
# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
reader = csv.reader(file)
header = next(reader) # Skip header row
print("Header:", header)
for row in reader:
print(f"Employee: {row[0]} | Role: {row[1]}")
# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager
--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000Implementação passo a passo
- Importe o módulo csv integrado em seu script.
- Abra o arquivo CSV usando open("employees.csv", "r", newline="", encoding="utf-8") como arquivo.
- Passe o objeto file para csv.reader(file) para analisar as linhas do arquivo como listas de strings.
- Use csv.DictReader(file) para analisar linhas como mapeamentos de dicionário correspondentes aos cabeçalhos das colunas.
Perguntas frequentes
Por que devo definir newline="" ao abrir um arquivo CSV?
Definir newline="" evita que o Python modifique caracteres de fim de linha dinamicamente, garantindo que o módulo csv possa analisar novas linhas no estilo csv corretamente em diferentes sistemas operacionais.
Como analiso um arquivo CSV que usa tabulações ou ponto e vírgula em vez de vírgulas?
Você pode passar um delimitador personalizado para a função de leitor: csv.reader(file, delimiter="\t") ou csv.reader(file, delimiter=";").
Tópicos Relacionados
Aprenda como ler arquivos em Python. Domine a instrução open, readline, readlines e manipule exceções de arquivo com segurança.
Como escrever em um arquivo em PythonAprenda como escrever texto em arquivos em Python. Domine a diferença entre os modos de gravação ("w") e acréscimo ("a") com gerenciadores de contexto seguros.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
E/S de arquivo Python
Aprenda a ler e escrever arquivos em Python. Domine open(), read(), write() e gerenciadores de contexto para lidar com operações de arquivo com segurança sem vazamentos de recursos.
Folha de referências de operações de arquivo Python
Referência rápida para leitura e gravação de arquivos em Python. Domine modos abertos, gerenciadores de contexto e leitura linha por linha.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.