JavaRush /Курсы /Python SELF /Сохранение данных в форматах CSV и Excel

Сохранение данных в форматах CSV и Excel

Python SELF
32 уровень , 3 лекция
Открыта

1. Подготовка данных для сохранения

На предыдущих лекциях мы уже научились извлекать данные из веб-страниц с помощью библиотеки BeautifulSoup. Теперь пора превратить наши скрейпинг-достижения в нечто полезное и удобное для анализа. Ведь если данные остаются только в вашем скрипте, от них мало пользы. Сегодня мы изучим, как сохранять данные в форматах CSV и Excel, ведь, как известно, в жизни программиста, как и в жизни кота, главное — найти,c что поесть... я имею в виду, сохранить.

Прежде чем мы начнем превращать наши данные в весёлые таблички, давайте ненадолго остановимся и рассмотрим, как подготовить наши данные к экспорту. Обычно данные, которые мы извлекаем из веб-страниц, представлены в виде списков или словарей. Желательно отформатировать их так, чтобы они были готовы к экспорту в табличный формат.

Пример данных

Предположим, что вы собрали следующие данные о книгах:

Python

books = [
    {"title": "Гарри Поттер и философский камень", "author": "Дж. К. Роулинг", "price": "350.00"},
    {"title": "Властелин Колец", "author": "Дж. Р. Р. Толкин", "price": "500.00"},
    {"title": "Мастер и Маргарита", "author": "М. А. Булгаков", "price": "450.00"}
]

2. Сохранение в формат CSV

CSV (Comma-Separated Values) — это простой текстовый формат, который позволяет хранить табличные данные. Каждая строка в CSV представляет собой запись, а каждый столбец разделяется запятыми. Давайте научимся сохранять наши данные в этом формате.

Использование библиотеки csv

Python предоставляет нам удобный модуль csv, который значительно облегчает жизнь при работе с CSV-файлами. Вот как можно экспортировать наши данные о книгах в CSV:

Python

import csv

with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
    writer.writeheader()
    writer.writerows(books)

print("Данные успешно сохранены в books.csv")

Обратите внимание: всегда указывайте newline='' при открытии файла в режиме w, чтобы избежать дополнительных пустых строк в Windows.

Считывание данных из CSV

Для полноты картины давайте разберем, как прочитать данные обратно из CSV:

Python

with open('books.csv', mode='r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)

3. Сохранение в формат Excel

Для работы с Excel в Python мы будем использовать библиотеку pandas. Pandas позволяет легко конвертировать наши данные в DataFrame и экспортировать их в различные форматы, включая Excel.

Установка pandas

Если вы еще не установили pandas, сделать это можно с помощью pip:

Bash

pip install pandas openpyxl

Использование pandas для экспорта в Excel

Теперь давайте сохраним наши данные о книгах в Excel:

Python

import pandas as pd

df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')

print("Данные успешно сохранены в books.xlsx")

Чтение данных из Excel

Какую радость приносит не только создание, но и повторное использование созданного! Давайте научимся считывать данные из Excel:

Python

df = pd.read_excel('books.xlsx')
print(df)

4. Ошибки и их обработка

Как и в любом другом аспекте программирования, при экспорте данных можно столкнуться с ошибками. Наиболее распространенные из них связаны с неверными путями к файлам или отсутствием необходимых библиотек. Например, если забыть установить openpyxl, экспорт в Excel не удастся.

Проверка наличия файлов

Перед тем как пытаться записать или прочитать файл, полезно проверять его наличие. Это можно сделать с помощью модуля os:

Python

import os

if os.path.exists('books.csv'):
    print("Файл books.csv существует")
else:
    print("Файл books.csv не найден")

Вы не поверите, но самая частая ошибка новичков - это случайное перетирание старых данных новыми. Автоматизация сохранения истории файлов - это целое искусство.

Не забудьте также включить обработку ошибок с помощью конструкций try-except, чтобы ваш скрипт не падал при первой же проблеме.

Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 1
25 июля 2025
Спасибо что дали лекцию по CSV через 5 лекций после того, как она была нужна в решении задач и пришлось ее учить самостоятельно по сторонним ресурсам. Ну ребят. Ну можно как-то пере-расположить лекции более логично? Хотя у вас алгоритмы на 51 уровне только... Забейте...
Slevin Уровень 1
25 июля 2025
И спасибо за задание на openpyxl, который видимо будет через 5-10 лекций? Или не будет никогда?