Если вы когда-либо задавались вопросом, как сохранить списки Python в виде аккуратного CSV-файла, то эта статья как раз для вас. Запись списка в файл с разделителями-запятыми — одна из наиболее распространенных задач в Python, и сегодня мы превратим вас в профессионала по созданию CSV-файлов.
Чтобы сохранить список Python в CSV формате, вы можете использовать встроенный модуль csv, разработанный специально для чтения и записи файлов CSV. Класс модуля csv.writer
предоставляет функции для записи простых и вложенных списков в файлы CSV.
Другие способы получения того же результата включают установку и использование внешних библиотек Pandas или NumPy.
Итак, приступим!
Оглавление
- Что такое списки в Python?
- Файлы CSV и модуль CSV в Python
- Как сохранить простой список Python в CSV формате
- Как сохранить список списков в формате CSV
- Как добавлять данные в уже существующие файлы формата CSV
- Как использовать класс
DictWriter
для записи в файл формата CSV - Другие способы работы с CSV в Python
- Заключение
Что такое списки в Python?
Список в Python является встроенной структурой данных, которая используется для хранения нескольких элементов в одной переменной.
От редакции Pythonist: подробнее о списках читайте в статье «Списки в Python: полное руководство для начинающих».
Основные свойства списков Python:
- упорядоченность (нумерация начинается с нуля)
- изменяемость (то есть списки в Python могут быть модифицированы)
- возможность хранить в них повторяющееся значения
Списки определяются при помощи значений, разделенных запятыми, которые расположены внутри квадратных скобок []
. Элементы списка могут относиться к любому типу данных: это могут быть, например, числа, строки или даже другие списки.
Вот пример создания простого списка:
products = [“t-shirts”, “hoodies”, “jeans”]
Списки списков в Python
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.
Списки списков также могут называться вложенными списками. Это списки, которые содержат другие списки в качестве своих элементов.
Вложенные списки часто используются в Python для представления структурированных данных в виде строк и столбцов. Они обычно используются в сценариях, где вам нужно сгруппировать связанные между собой данные.
Вот пример создания вложенного списка, который представляет товары, цены и количество продаж:
product_sales = [[“t-shirts”, 9.99, 342], [“hoodies”, 24.99, 118], [“jeans”, 29.99, 612]
Файлы CSV и модуль CSV в Python
Файлы CSV представляют собой табличные данные в простом файловом формате. Каждая строка в файле соответствует строке в таблице. Каждое значение в строке отделяется запятой — поэтому собственно и сам формат расшифровывается как Comma Separated Values («значения, разделенные запятыми»).
Вот как может выглядеть файл, представляющий товары, цены и количество продаж в формате CSV:
t-shirts, 9.99, 342 hoodies, 24.99, 118 jeans, 29.99, 612
Модуль csv — это встроенный модуль Python, предоставляющий инструменты для чтения и записи данных в формате CSV. Он очень удобен и полезен из-за своей простоты и эффективности.
Импортируя модуль csv
, вы получаете доступ к классу csv.writer()
. Это позволяет вам создать объект записи, который может записывать строку с разделителями в объект файла.
А теперь, рассмотрев основы, давайте посмотрим, как сохранить простой список Python в файл формата CSV.
Как сохранить простой список Python в CSV-формате
Для начала рассмотрим простой, невложенный список Python, который имеет следующий вид:
my_list = ["t-shirts", "hoodies", "jeans"]
В общем случае шаги для записи списка в файл формата CSV следующие:
- импортируем модуль csv
- создаем список Python
- открываем файл csv в режиме записи (write mode)
- используем функцию
writerow()
на объекте csv writer - сохраняем и закрываем csv-файл.
Функция writerow()
запишет несколько строк, т. е. все данные, в один файл. Вот код с подробными комментариями:
# Шаг 1: импортируем модуль csv import csv # Шаг 2: создаем список Python my_list = ["t-shirts", "hoodies", "jeans"] # Шаг 3: открываем файл csv в режиме записи (write mode) with open('products.csv', 'w', newline='') as file: # Шаг 4: используем метод csv.writer, чтобы сохранить список в файл формата CSV writer = csv.writer(file) writer.writerow(my_list) # Use writerow for single list # Шаг 5: После выхода из блока with файл автоматически закрывается
В данном примере для работы с файлами был использован контекстный менеджер with
. Он очень удобен тем, что по окончании его работы все открытые файлы автоматически закрываются.
Как сохранить список списков в формате CSV
В списке списков каждый внутренний список должен быть строкой CSV в файле. Вот как должны выглядеть данные в формате CSV:
Общие шаги аналогичны предыдущему разделу, за исключением того, что мы используем функцию writerows()
вместо writerow()
.
# Шаг 1: импортируем модуль csv import csv # Шаг 2: Создаем список списков my_list = [["t-shirts", 9.99, 342], ["hoodies", 24.99, 118], ["jeans", 29.99, 612]] # Шаг 3: открываем файл csv в режиме записи (write mode) with open('product_sales.csv', 'w', newline='') as file: # Шаг 4: используем метод csv.writer, чтобы сохранить список в файл формата CSV writer = csv.writer(file) writer.writerows(my_list) # Use writerows for nested list # Шаг 5: После выхода из блока with файл автоматически закрывается
В данном примере каждый внутренний список записывается как отдельная строка в файле.
Заметим, что модуль csv дает нам возможность избежать использования циклов для перебора структуры данных и ее построчной записи в файл.
Теперь давайте рассмотрим, как добавлять данные в уже существующий файл формата CSV.
Как добавлять данные в уже существующие CSV-файлы
Чтобы добавить данные в существующий CSV-файл, выполним следующие действия:
- импортируем модуль csv
- откроем уже существующий файл формата CSV при помощи функции
open()
внутри контекстного менеджераwith
; - создадим новый список с данными, которые необходимо добавить в файл
- создадим объект класса csv.writer() и передадим в него открытый файл
- при помощи этого объекта добавим список в файл
Вот пример, в котором список (одна строка) добавляется в существующий файл:
import csv new_row = [["leggings", 22.99, 483]] with open('product_sales.csv', 'a', newline='') as file: writer = csv.writer(file) writer.writerows(new_row)
Не забудьте включить параметр newline=''
при открытии файла, чтобы обеспечить правильное форматирование файла CSV на разных платформах.
В следующем разделе мы расскажем, как использовать класс DictWriter
для записи в файлы формата CSV.
Как использовать класс DictWriter для записи в CSV-файл
Итак, мы научились записывать списки в файлы формата CSV. Однако в Python есть и другие структуры данных, например словари, которые также можно записать в CSV-файл.
Класс DictWriter()
также является частью модуля csv. Он похож на класс Writer()
, но обрабатывает данные словаря.
Вот простой пример:
import csv product_sales_dict = [ {"product": "t-shirts", "price": 9.99, "sales": 342}, {"product": "hoodies", "price": 24.99, "sales": 118}, {"product": "jeans", "price": 29.99, "sales": 612} ] fieldnames = ["product", "price", "sales"] with open("dictionary.csv", "w", newline="") as csvfile: writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerows(product_sales_dict)
Другие способы работы с CSV в Python
Использование модуля csv — не единственный способ экспорта списков Python в файлы формата CSV.
Есть две очень популярные библиотеки, Pandas и Numpy, которые также предоставляют похожую функциональность.
Как экспортировать данные при помощи библиотеки Pandas
Pandas — это очень широко используемая библиотека Python для обработки и анализа данных.
От редакции Pythonist: если вы не знакомы с этой библиотекой, предлагаем статью «Полное руководство по Pandas для начинающих».
Чтобы сохранить списки Python в виде файла формата CSV, вы можете создать DataFrame pandas прямо из списка, а затем использовать метод to_csv()
, как показано ниже:
import pandas as pd # Пример списка списков data = [['ABC', 1.2, 30], ['XYZ', 0.8, 20], ['LMN', 2.3, 50]] # Создаем DataFrame из списка data_frame = pd.DataFrame(data, columns=['Name', 'Value', 'Quantity']) # Сохраняем DataFrame в файл формата CSV data_frame.to_csv('output.csv', index=False, encoding='utf-8')
Если ваши данные содержат символы, отличные от ASCII, вам может потребоваться установить для параметра кодировки encoding
соответствующее значение, например "utf-8"
.
Как при помощи библиотеки Numpy сохранить список в формате CSV
Еще одна библиотека, которую стоит рассмотреть, — это NumPy. Она обеспечивает поддержку работы с массивами и матрицами.
Библиотека NumPy предлагает функцию np.savetxt()
в качестве удобного метода сохранения данных в файл формата CSV.
Вот пример, демонстрирующий, как сохранить список в файл формата CSV при помощи библиотеки NumPy:
import numpy as np # Список списков data = [['ABC', 1.2, 30], ['XYZ', 0.8, 20], ['LMN', 2.3, 50]] # Сохранить список в CSV-файл np.savetxt('output.csv', data, delimiter=',', fmt='%s', header='Name,Value,Quantity', comments='')
Вот краткое описание параметров функции savetxt()
:
delimiter
определяет разделитель полейfmt
указывает формат сохраняемых данных%s
— заполнитель для строковых значенийheader
— список заголовков столбцовcomments
— управление символами, которые начинают комментарии в выходном файле
Заключение
Запись списка Python в CSV-файл — это простой и эффективный способ хранения и обмена данных. Из этой статьи вы узнали, как использовать встроенный в Python модуль csv для выполнения данной задачи.
Мы разобрали, как создать список Python, импортировать модуль csv, открыть CSV-файл и использовать класс csv.writer
для записи списка в CSV-файл.
Вы также узнали о более сложных способах записи списка списков в CSV-файл, что позволяет хранить табличные данные.
Не забывайте, чтобы достичь совершенства в программировании, прежде всего необходима практика. Используйте эти новые знания, поэкспериментируйте с ними и посмотрите, как происходит работа с различными наборами данных.
Это была только верхушка айсберга языка Python. В огромном мире Python есть еще много всего интересного, так что не останавливайтесь на достигнутом. Но сегодня вы можете себя похвалить. Вы успешно научились сохранять списки в файлы формата CSV!
Перевод статьи How to Write a List to CSV in Python.