Формат CSV является наиболее часто используемым форматом импорта и экспорта для баз данных и электронных таблиц. В этом руководстве будет подробно рассказано о CSV, а также о модулях и классах, доступных для чтения и записи данных в файлы CSV. Также будет рассмотрен рабочий пример, чтобы показать вам, как читать и записывать данные в файл CSV на Python.
Что такое файл CSV?
Файл CSV (значения, разделенные запятыми) позволяет сохранять данные в табличной структуре с расширением .csv. Файлы CSV широко использовались в приложениях электронной коммерции, поскольку их очень легко обрабатывать. Некоторые из областей, где они были использованы, включают в себя:
- импорт и экспорт данных клиентов
- импорт и экспорт продукции
- экспорт заказов
- экспорт аналитических отчетов по электронной коммерции
Модули для чтения и записи
Модуль CSV имеет несколько функций и классов, доступных для чтения и записи CSV, и они включают в себя:
- функция csv.reader
- функция csv.writer
- класс csv.Dictwriter
- класс csv.DictReader
csv.reader
Модуль csv.reader принимает следующие параметры:
-
csvfile
: обычно это объект, который поддерживает протокол итератора и обычно возвращает строку каждый раз, когда__next__()
его__next__()
. -
dialect='excel'
: необязательный параметр, используемый для определения набора параметров, специфичных для определенного диалекта CSV. -
fmtparams
: необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.
Вот пример того, как использовать модуль csv.reader.
1
2
3
4
5
6
|
import csv
with open(‘example.csv’, newline=») as File:
reader = csv.reader(File)
for row in reader:
print(row)
|
модуль csv.writer
Этот модуль похож на модуль csv.reader и используется для записи данных в CSV. Требуется три параметра:
-
csvfil e
: это мочь быть любым объектом с методомwrite()
. -
dialect='excel'
: необязательный параметр, используемый для определения набора параметров, специфичных для конкретного CSV. -
fmtparam
: необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.
Классы DictReader и DictWriter
DictReader и DictWriter — это классы, доступные в Python для чтения и записи в CSV. Хотя они и похожи на функции чтения и записи, эти классы используют объекты словаря для чтения и записи в CSV-файлы.
DictReader
Он создает объект, который отображает прочитанную информацию в словарь, ключи которого задаются параметром fieldnames
. Этот параметр является необязательным, но если он не указан в файле, данные первой строки становятся ключами словаря.
Пример:
1
2
3
4
5
|
import csv
with open(‘name.csv’) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row[‘first_name’], row[‘last_name’])
|
DictWriter
Этот класс аналогичен классу DictWriter и выполняет противоположную функцию: запись данных в файл CSV. Класс определяется как csv.
DictWriter
(
csvfile
,
DictWriter
csvfile
,
restval=''
,
extrasaction='raise'
,
dialect='excel'
,
*args
,
**
kwds
)
Параметр fieldnames
определяет последовательность ключей, которые определяют порядок, в котором значения в словаре записываются в файл CSV. В отличие от DictReader, этот ключ не является обязательным и должен быть определен во избежание ошибок при записи в CSV.
Диалекты и форматирование
Диалект — это вспомогательный класс, используемый для определения параметров для конкретного экземпляра reader
или writer
. Диалекты и параметры форматирования должны быть объявлены при выполнении функции чтения или записи.
Есть несколько атрибутов, которые поддерживаются диалектом:
- разделитель : строка, используемая для разделения полей. По умолчанию это
','
. - двойная кавычка : Управляет тем, как должны быть указаны кавычки, появляющиеся внутри поля. Может быть Верным или Ложным.
- escapechar : строка, используемая автором для экранирования разделителя, если в
QUOTE_NONE
задано значениеQUOTE_NONE
. - lineterminator : строка, используемая для завершения строк, созданных
writer
. По умолчанию используется значение'\r\n'
. - quotechar : строка, используемая для цитирования полей, содержащих специальные символы. По умолчанию
'"'
. - skipinitialspace : если установлено значение
True
, любые пробелы, следующие сразу за разделителем , игнорируются. - строгий : если установлено
True
, это вызывает ошибку исключения при неправильном вводе CSV. - цитирование : определяет, когда следует создавать кавычки при чтении или записи в CSV.
Чтение файла CSV
Давайте посмотрим, как читать CSV-файл, используя вспомогательные модули, которые мы обсуждали выше.
Создайте свой CSV-файл и сохраните его как example.csv. Убедитесь, что он имеет расширение .csv
и заполните некоторые данные. Здесь у нас есть CSV-файл, который содержит имена учеников и их оценки.
Ниже приведен код для чтения данных в нашем CSV с использованием функции csv.DictReader
класса csv.DictReader
.
Чтение CSV-файла с помощью csv.reader
1
2
3
4
5
6
7
|
import csv
with open(‘example.csv’) as File:
reader = csv.reader(File, delimiter=’,’, quotechar=’,’,
quoting=csv.QUOTE_MINIMAL)
for row in reader:
print(row)
|
В приведенном выше коде мы импортируем модуль CSV, а затем открываем наш файл CSV в виде File
. Затем мы определяем объект reader и используем метод csv.reader
для извлечения данных в объект. Затем мы перебираем объект reader
и извлекаем каждую строку наших данных.
Мы показываем прочитанные данные, печатая их содержимое на консоль. Мы также указали обязательные параметры, такие как разделитель, кавычка и цитирование.
Выход
1
2
3
4
|
[‘first_name’, ‘last_name’, ‘Grade’]
[‘Alex’, ‘Brian’, ‘B’]
[‘Rachael’, ‘Rodriguez’, ‘A’]
[‘Tom’, ‘smith’, ‘C’]
|
Чтение CSV-файла с помощью DictReader
Как мы упоминали выше, DictWriter позволяет нам читать файл CSV, отображая данные в словарь вместо строк, как в случае с модулем csv.reader
. Хотя имя поля является необязательным параметром, важно всегда помечать столбцы для удобства чтения.
Вот как читать CSV, используя класс DictWriter.
1
2
3
4
5
6
7
8
|
import csv
results = []
with open(‘example.csv’) as File:
reader = csv.DictReader(File)
for row in reader:
results.append(row)
print results
|
Сначала мы импортируем модуль csv и инициализируем результаты пустого списка, которые мы будем использовать для хранения полученных данных. Затем мы определяем объект reader и используем метод csv.DictReader
для извлечения данных в объект. Затем мы перебираем объект reader
и извлекаем каждую строку наших данных.
Наконец, мы добавляем каждую строку в список результатов и выводим содержимое на консоль.
Выход
1
2
3
4
5
|
[{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’, ‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}]
|
Как вы можете видеть выше, использование класса DictReader лучше, потому что он выдает наши данные в формате словаря, с которым легче работать.
Запись в файл CSV
Давайте теперь посмотрим, как csv.writer
к записи данных в файл CSV с csv.writer
функции csv.Dictwriter
класса csv.Dictwriter
обсуждались в начале этого урока.
Запись в файл CSV с помощью csv.writer
Код ниже записывает данные, определенные в файл example2.csv
.
01
02
03
04
05
06
07
08
09
10
11
12
|
import csv
myData = [[«first_name», «second_name», «Grade»],
[‘Alex’, ‘Brian’, ‘A’],
[‘Tom’, ‘Smith’, ‘B’]]
myFile = open(‘example2.csv’, ‘w’)
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
print(«Writing complete»)
|
Сначала мы импортируем модуль csv, и функция writer()
создаст объект, подходящий для записи. Чтобы перебрать данные по строкам, нам нужно будет использовать writerows()
функция.
Вот наш CSV с данными, которые мы записали в него.
Запись в файл CSV с использованием DictWriter
Давайте напишем следующие данные в CSV.
1
2
3
4
5
|
data = [{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’, ‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}]
|
Код, как показано ниже.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
import csv
with open(‘example4.csv’, ‘w’) as csvfile:
fieldnames = [‘first_name’, ‘last_name’, ‘Grade’]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’})
writer.writerow({‘Grade’: ‘A’, ‘first_name’: ‘Rachael’,
‘last_name’: ‘Rodriguez’})
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’})
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Loive’})
print(«Writing complete»)
|
Сначала мы определим fieldnames
, которые будут представлять заголовки каждого столбца в файле CSV. Метод writerrow()
будет записывать по одной строке за раз. Если вы хотите записать все данные одновременно, вы будете использовать метод writerrows()
.
Вот как можно записать все строки одновременно.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
import csv
with open(‘example5.csv’, ‘w’) as csvfile:
fieldnames = [‘first_name’, ‘last_name’, ‘Grade’]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows([{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’,
‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}])
print(«writing complete»)
|
Вывод
В этом руководстве рассматривается большинство вопросов, необходимых для успешного чтения и записи в файл CSV с использованием различных функций и классов, предоставляемых Python. CSV-файлы широко используются в программных приложениях, потому что они легко читаются и управляются, а их небольшой размер делает их относительно быстрой для обработки и передачи.
Не стесняйтесь, чтобы увидеть, что у нас есть в наличии для продажи и для изучения на рынке , и не стесняйтесь задавать любые вопросы и предоставить свой ценный отзыв, используя канал ниже.
Выучить питон
Изучите Python с нашим полным руководством по питону, независимо от того, начинаете ли вы или начинающий программист, ищущий новые навыки.