CSV (Comma Separated Values) is a simple file format used to store tabular data, such as a spreadsheet or database. CSV file stores tabular data (numbers and text) in plain text. Each line of the file is a data record. Each record consists of one or more fields, separated by commas. The use of the comma as a field separator is the source of the name for this file format. Let’s discuss How to Write to CSV Files in Python.
Writing CSV files in Python
Below are the ways by which we can write CSV files in Python:
- Write into CSV files using Python csv.DictWriter()
- Write into CSV files using csv.writer()
- Write CSV File Having Pipe Delimiter
- Write CSV files with quotes
- Writing CSV files with custom quoting character
- Using escapechar in CSV writer
Python Write to CSV using DictWriter()
This class returns a writer object which maps dictionaries onto output rows.
Syntax: csv.DictWriter(csvfile, fieldnames, restval=”, extrasaction=’raise’, dialect=’excel’, *args, **kwds)
Parameters:
- csvfile: A file object with write() method.
- fieldnames: A sequence of keys that identify the order in which values in the dictionary should be passed.
- restval (optional): Specifies the value to be written if the dictionary is missing a key in fieldnames.
- extrasaction (optional): If a key not found in fieldnames, the optional extrasaction parameter indicates what action to take. If it is set to raise a ValueError will be raised.
- dialect (optional): Name of the dialect to be used.
In this example, student records are stored as dictionaries, and a CSV file named “university_records.csv” is generated using these dictionaries. The `csv.DictWriter` class is utilized to write the field names as headers and the dictionary data rows to the CSV file.
Python3
import csv
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' }]
fields = [ 'name' , 'branch' , 'year' , 'cgpa' ]
filename = "university_records.csv"
with open (filename, 'w' ) as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = fields)
writer.writeheader()
writer.writerows(mydict)
|
Output:
name,branch,year,cgpa
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
Write into CSV Files Using csv.writer()
csv.writer
class is used to insert data to the CSV file. This class returns a writer object which is responsible for converting the user’s data into a delimited string. A csvfile object should be opened with newline=''
otherwise, newline characters inside the quoted fields will not be interpreted correctly.
Syntax: csv.writer(csvfile, dialect=’excel’, **fmtparams)
Parameters:
- csvfile: A file object with write() method.
- dialect (optional): Name of the dialect to be used.
- fmtparams (optional): Formatting parameters that will overwrite those specified in the dialect.
In this example, a CSV file named “university_records.csv” is created and populated with student records. The file contains fields such as Name, Branch, Year, and CGPA. The data rows for individual students are written to the CSV file, followed by the field names.
Python3
import csv
fields = [ 'Name' , 'Branch' , 'Year' , 'CGPA' ]
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' ]]
filename = "university_records.csv"
with open (filename, 'w' ) as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(fields)
csvwriter.writerows(rows)
|
Output:
Name,Branch,Year,CGPA
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
Creating CSV Files in Python Having Pipe Delimiter
In this example, a CSV file named “data_pipe_delimited.csv” is generated with data rows separated by pipe (|
) delimiters. The file contains information on individuals’ names, ages, and cities.
Python3
import csv
data = [
[ 'Name' , 'Age' , 'City' ],
[ 'Alice' , 25 , 'New York' ],
[ 'Bob' , 30 , 'Los Angeles' ],
[ 'Charlie' , 35 , 'Chicago' ]
]
filename = 'data_pipe_delimited.csv'
with open (filename, 'w' , newline = '') as csvfile:
csvwriter = csv.writer(csvfile, delimiter = '|' )
csvwriter.writerows(data)
print (f "Data has been written to {filename}" )
|
Output:
Name|Age|City
Alice|25|New York
Bob|30|Los Angeles
Charlie|35|Chicago
Write CSV Files with Quotes
In this example, a CSV file named “students_data.csv” is generated with each field enclosed in double quotes. The file contains information about students’ names, branches, years, and CGPA scores.
Python3
import csv
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' ]
]
filename = 'students_data.csv'
with open (filename, 'w' , newline = '') as csvfile:
csvwriter = csv.writer(csvfile, quoting = csv.QUOTE_ALL)
csvwriter.writerows(rows)
print (f "Data has been written to {filename}" )
|
Output:
"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"
Writing CSV Files with Custom Quoting Character
In this example, a CSV file named “students_data.csv” is created with fields separated by pipe (|
) delimiters and enclosed in tildes (~
). The data includes student names, branches, years, and CGPA scores.
Python3
import csv
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' ]
]
filename = 'students_data.csv'
with open (filename, 'w' , newline = '') as file :
writer = csv.writer( file , quoting = csv.QUOTE_NONNUMERIC,
delimiter = '|' , quotechar = '~' )
writer.writerows(rows)
print (f "Data has been written to {filename}" )
|
Output:
~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
Using escapechar in CSV
In this example, a CSV file named “students.csv” is generated with fields separated by pipe (|
) delimiters. The quotechar
is set to double quotes ("
) and the escapechar
is set to backslash (\\
), allowing for proper handling of quotes within the data.
Python3
import csv
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' ]
]
filename = 'students.csv'
with open (filename, 'w' , newline = '') as file :
writer = csv.writer( file , quoting = csv.QUOTE_NONE,
delimiter = '|' , quotechar = '"' , escapechar = '\\' )
writer.writerows(rows)
print (f "Data has been written to {filename}" )
|
Output:
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
Share your thoughts in the comments
Please Login to comment...