CSV (значения, разделенные запятыми) — это простой формат файла, используемый для хранения табличных данных, таких как электронная таблица или база данных. Файл CSV хранит табличные данные (цифры и текст) в виде обычного текста. Каждая строка файла представляет собой запись данных. Каждая запись состоит из одного или нескольких полей, разделенных запятыми. Использование запятой в качестве разделителя полей является источником имени для этого формата файла.
Python предоставляет встроенный модуль csv
, предназначенный для работы с CSV-файлами. Этот модуль предоставляет различные классы для записи в CSV:
- Использование класса csv.writer
- Использование класса csv.DictWriter
Использование класса csv.writer
csv.writer
класс используется для вставки данных в CSV-файл. Этот класс возвращает объект записи, который отвечает за преобразование данных пользователя в строку с разделителями. Объект csvfile должен быть открыт с newline=''
помощью символов новой строки, в противном случае символы новой строки внутри полей в кавычках будут интерпретированы неправильно.
Синтаксис:
csv.writer(csvfile, dialect=’excel’, **fmtparams)
Параметры:
csvfile: Файловый объект с методом записи ().
dialect (optional): Название используемого диалекта.
fmtparams (optional): Параметры форматирования, которые будут перезаписывать параметры, указанные в диалекте.
csv.writer
класс предоставляет два метода записи в CSV. Они являются writerow()
и writerows()
.
- writerow(): Этот метод записывает по одной строке за раз. Строка поля может быть записана с помощью этого метода.
Синтаксис:
writerow(fields)
- writerows(): Этот метод используется для записи нескольких строк одновременно. Это можно использовать для записи списка строк.
Синтаксис:
Writing CSV files in Python writerows(rows)
Пример:
# Python program to demonstrate
# writing to CSV
import csv
# field names
fields = ['Name', 'Branch', 'Year', 'CGPA']
# data rows of csv file
rows = [ ['Nikhil', 'COE', '2', '9.0'],
['Sanchit', 'COE', '2', '9.1'],
['Aditya', 'IT', '2', '9.3'],
['Sagar', 'SE', '1', '9.5'],
['Prateek', 'MCE', '3', '7.8'],
['Sahil', 'EP', '2', '9.1']]
# name of csv file
filename = "university_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the fields
csvwriter.writerow(fields)
# writing the data rows
csvwriter.writerows(rows)
Выход:
Использование класса csv.DictWriter
Этот класс возвращает объект записи, который отображает словари в выходные строки.
Синтаксис:
csv.DictWriter(csvfile, fieldnames, restval=”, extrasaction=’raise’, dialect=’excel’, *args, **kwds)
Параметры:
csvfile: Файловый объект с методом записи ().
fieldnames: Последовательность ключей, определяющих порядок, в котором должны передаваться значения в словаре.
restval (optional): Указывает значение, которое должно быть записано, если в словаре отсутствует ключ в именах полей.
extrasaction (optional): Если ключ не найден в именах полей, необязательный параметр экстрасакции указывает, какие действия следует предпринять. Если он настроен на повышение, будет повышена ошибка значения.
dialect (optional): Название используемого диалекта.
csv.DictWriter предоставляет два метода записи в CSV. Они являются:
- writeheader():
writeheader()
метод просто записывает writerows первую строку вашего csv-файла, используя предварительно указанные имена полей.
Синтаксис:
writeheader()
- writerows():
writerows
метод просто записывает все строки, но в каждой строке он записывает только значения(не ключи).
Синтаксис:
writerows(mydict)
Пример:
# importing the csv module
import csv
# my data rows as dictionary objects
mydict =[{'branch': 'COE', 'cgpa': '9.0', 'name': 'Nikhil', 'year': '2'},
{'branch': 'COE', 'cgpa': '9.1', 'name': 'Sanchit', 'year': '2'},
{'branch': 'IT', 'cgpa': '9.3', 'name': 'Aditya', 'year': '2'},
{'branch': 'SE', 'cgpa': '9.5', 'name': 'Sagar', 'year': '1'},
{'branch': 'MCE', 'cgpa': '7.8', 'name': 'Prateek', 'year': '3'},
{'branch': 'EP', 'cgpa': '9.1', 'name': 'Sahil', 'year': '2'}]
# field names
fields = ['name', 'branch', 'year', 'cgpa']
# name of csv file
filename = "university_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv dict writer object
writer = csv.DictWriter(csvfile, fieldnames = fields)
# writing headers (field names)
writer.writeheader()
# writing data rows
writer.writerows(mydict)