DevGang
Авторизоваться

Как читать и записывать файлы CSV в Python

Запись в файл CSV с помощью DictWriter

Давайте запишем следующие данные в наш файл CSV. Он содержит информацию о трех разных штатах США в виде списка, отдельные элементы которого представляют собой словарь.

state_info = [
    {
        "Name": "Colorado",
        "Largest City": "Denver",
        "Capital City": "Denver",
        "Population": "5773714"
    }, {
        "Name": "Connecticut",
        "Largest City": "Hartford",
        "Capital City": "Bridgeport",
        "Population": "3605944"
    }, {
        "Name": "Delaware",
        "Largest City": "Dover",
        "Capital City": "Wilmington",
        "Population": "989948"
    }
]

Код показан ниже.

import csv
 
fields = ['Name', 'Capital City', 'Largest City', 'Population'];
 
with open('state-data.csv', 'a', newline='') as state_file:
    writer = csv.DictWriter(state_file, fields)
    writer.writerows(state_info)

Сначала мы определяем имена полей в виде списка и сохраняем их в переменных полей (fields). Это позволяет объекту записи (writer) знать, каким будет заголовок каждого столбца в файле CSV. Метод writerows() сразу записывает все строки, которые мы ему передаем, в CSV-файл. Единственное условие для writerows() состоит в том, что строки, которые мы хотим записать, являются итерируемыми.

Каждая отдельная строка сама по себе также должна быть итерируемой строкой или числом, если мы используем функцию writer(), как мы делали в предыдущем примере. В противном случае каждая строка должна быть словарем, который сопоставляет имена полей (fieldnames)со строками или числами, чтобы класс DictWriter мог ее обработать.

Теперь попробуем записать в наш CSV-файл следующие данные:

state_info = [
    {
        "Name": "Florida",
        "Capital City": "Tallahassee"
    }, {
        "Name": "Georgia",
        "Area": "153910",
        "Largest City": "Atlanta",
        "Population": "10711908",
        "Capital City": "Atlanta",
    }
]

В приведенных выше данных есть два примечательных момента. Во-первых, в нашем штате Флорида отсутствует некоторая информация. Во-вторых, у штата Джорджия есть дополнительная информация, основанная на том, что мы храним в таблице. В-третьих, ключи для штата Джорджия расположены не в том порядке, в котором мы определили поля для нашего CSV-файла.

Как мы можем обрабатывать такие нестандартные данные? Класс DictWriter предлагает решение. Для отсутствующих ключей мы можем просто указать значение по умолчанию, используя параметр restval. По умолчанию это пустая строка. Однако вы также можете указать пользовательское значение, например Неизвестно (Unknown). Для дополнительных ключей вы можете использовать параметр extrasaction, чтобы указать DictWriter игнорировать эти ключи. Этот параметр по умолчанию вызовет ошибку ValueError.

Вот как писать во все строки сразу.

import csv
 
fields = ['Name', 'Capital City', 'Largest City', 'Population']
 
with open('state-data.csv', 'a', newline='') as state_file:
    writer = csv.DictWriter(state_file, fields, restval='Unknown', extrasaction='ignore')
    writer.writerows(state_info)

Наш CSV-файл после всех операций записи будет выглядеть так:

Вывод

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

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу