You are currently viewing Написание CSV-файлов на Python

Написание CSV-файлов на Python

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)

Выход: