Работа с CSV-файлами в Python!
CSV — один из самых часто используемых форматов в backend-разработке. В Python для работы с этим форматом используется модуль csv, которого достаточно для большинства задач.
Начнём с импорта:
import csvПредположим, у нас есть данные в виде списка словарей — типичный результат работы с ORM, API или промежуточной бизнес-логики:
data = [
{"id": 1, "name": "Alice", "score": 92},
{"id": 2, "name": "Bob", "score": 85},
{"id": 3, "name": "Charlie", "score": 78},
]Запишем эти данные в CSV-файл. Для структурированных данных предпочтительно использовать
DictWriter, так как он явно фиксирует набор и порядок колонок:with open("results.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)Кодировку лучше задавать явно, чтобы избежать проблем при передаче файлов между системами.
Теперь прочитаем CSV обратно. Важно помнить, что CSV не хранит типы данных — все значения будут строками:
with open("results.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
rows = list(reader)
print(rows)Частая задача — фильтрация данных с приведением типов. Например, выберем пользователей с результатом выше 80:
top_users = [
row for row in rows
if int(row["score"]) > 80
]
print(top_users)Если CSV-файл приходит без заголовков, используется позиционное чтение через csv.reader:
with open("raw.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
user_id, name, score = row
print(user_id, name, score)CSV кажется простым форматом, но именно аккуратная работа с кодировками, схемой и типами данных делает код надёжным.
Python Ready | #практика
Просмотры: 206