Работа с 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
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти