Запись в CSV-файлы с помощью Python стала проще
Мне нравится использовать Python для работы с CSV-файлами именно потому, что это просто.
Допустим, мы хотим записать каждый элемент в следующем списке в файл CSV:
colours = ['blue', 'red', 'green']
Мы можем сделать это с помощью 4 строк кода:
import csv colours = ['blue', 'red', 'green'] with open('example.csv', 'w') as f: writer = csv.writer(f) for colour in colours: writer.writerow([colour])
Метод writerow()
требует итерации строк или чисел, каждый элемент которых записывается в другую ячейку в строке.
Объясним подробнее.
Вы заметите, что в приведенном выше примере кода я заключил в квадратные скобки переменную colour
.
Давайте удалим это:
colours = ['blue', 'red', 'green'] with open('example.csv', 'w') as f: writer = csv.writer(f) for colour in colours: writer.writerow(colour)
Вот как будет выглядеть наш CSV-файл:
Почему это?
Для каждого элемента в нашем списке colours
мы передаем строку («синий», «красный», «зеленый»).
Эта строка обрабатывается как итерируемая, поэтому каждый символ представляет собой отдельный элемент, который записывается в отдельный столбец в той же строке.
При заключении каждой строки в квадратные скобки строка больше не рассматривается как итерируемая, а вместо этого просто как один элемент внутри итерируемой, что означает, что она будет записана в одну ячейку/столбец в строке:
Также есть метод writerows()
, который принимает в качестве аргумента список списков, записывая каждый отдельный список в одну ячейку в отдельной строке:
colours = [['blue'], ['green'], ['red']] with open('example.csv', 'w') as f: writer = csv.writer(f) writer.writerows(colours)
Выход:
Запись в несколько столбцов
Мы уже установили, как записывать в несколько столбцов — каждый элемент в итерируемом объекте, переданном в writerow()
, будет записываться в одну и ту же строку, но в отдельный столбец:
city_sales = [['Sydney', 1000], ['Melbourne', 2500], ['Perth', 500], ['Adelaide', 800]] with open('example.csv', 'w') as f: writer = csv.writer(f) writer.writerows(city_sales)
Наш CSV-файл:
Написание заголовков столбцов
Наш предыдущий пример выглядел бы намного лучше с заголовками столбцов.
Представляем объект DictWriter
.
С помощью параметра fieldnames
вы передаете список заголовков столбцов, а затем используете метод writeheader()
DictWriter
для записи заголовков столбцов.
with open('example.csv', 'w') as f: writer = csv.DictWriter(f, fieldnames=['City', 'Population']) writer.writeheader()
Вместо передачи списка в writerow()
вы передаете словарь, ключами которого являются столбцы, в которые вы хотите записать, а значениями которого являются значения, которые вы хотите записать в этот столбец:
city_sales = [['Sydney', 1000], ['Melbourne', 2500], ['Perth', 500], ['Adelaide', 800]] with open('example.csv', 'w') as f: writer = csv.DictWriter(f, fieldnames=['City', 'Population']) writer.writeheader() writer.writerow({'City':'Sydney', 'Population':1000})
Выход:
Давайте введем цикл for
для записи нашего списка city_sales
в файл CSV:
city_sales = [['Sydney', 1000], ['Melbourne', 2500], ['Perth', 500], ['Adelaide', 800]] with open('example.csv', 'w') as f: writer = csv.DictWriter(f, fieldnames=['City', 'Population']) writer.writeheader() for city in city_sales: writer.writerow({'City':city[0], 'Population':city[1]})
Выход:
И вот! Запись в CSV-файлы стала проще благодаря Python.
Чтение CSV-файлов
Если вы хотите научиться читать CSV-файлы с помощью Python, ознакомьтесь со следующим:
Если вам понравилась эта статья, подпишитесь на меня в Medium и Twitter, чтобы узнать больше. Я часто изучаю модули из стандартной библиотеки, а также публикую учебные пособия для забавных проектов, таких как создание списка лучших книг научной фантастики с помощью Python.
Я также затрагиваю другие темы данных, такие как SQL и программное обеспечение для визуализации данных Tableau.
🐍