TUTORIAL EXAMPLES
Writing CSV files in Python
In this article, we will learn how to write data into csv les in Python of di erent
formats.
Table of Contents
Writing data into di erent types of CSV les
Writing on Existing File
Normal CSV File
CSV File with Quotes
CSV les with Custom Delimiters
CSV le with Lineterminator
CSV le with quotechars
Writing CSV le into a Dictionary
Python provides an easy way to work with csv le. It has csv module to read and write
data in the csv le.
Here, we will learn how to write data into csv les in di erent formats with the help of
examples.
Writing data into di erent types of CSV les
RECOMMENDED READINGS
In the previous article, we learned how to read csv les in Python. In similar way, we
write
can also
TUTORIAL EXAMPLES
a new or edit existing csv les in Python.
In Python we use csv.writer() module to write data into csv les. This module is similar
to the csv.reader() module.
Writing on Existing File
We have a people.csv le with following data.
SN, Name, City
1, John, Washington
2, Eric, Los Angeles
3, Brad, Texas
Now, we are going to modify people.csv le.
Example 1: Modifying existing rows of people.csv
import csv
row = ['2', ' Marie', ' California']
with open('people.csv', 'r') as readFile:
reader = csv.reader(readFile)
lines = list(reader)
lines[2] = row
with open('people.csv', 'w') as writeFile:
writer = csv.writer(writeFile)
writer.writerows(lines)
readFile.close()
writeFile.close()
When we open the people.csv le with text editor, then it will show:
SN, Name, City
1, John, Washington
2, Marie, California
3, Brad, Texas
In the above program, we modi ed the third row of people.csv and saved the result. At
rst, we read the people.csv le using csv.reader() function. Then, we used list() function
to convert all the csv data in a list and store in lines . After that, we changed third row
RECOMMENDED READINGS
of csv le with row i.e lines[2] = row . Finally, we write the values of lines list to
people.csv
TUTORIAL
le.
EXAMPLES
Sometimes, we may need to add new rows in the existing csv le. So, we are going to
append a new row to people.csv le used in Example 1.
Example 2: Appending new rows to people.csv le
import csv
row = ['4', ' Danny', ' New York']
with open('people1.csv', 'a') as csvFile:
writer = csv.writer(csvFile)
writer.writerow(row)
csvFile.close()
When we open people.csv le with text editor, then it will show :
SN, Name, City
1, John, Washington
2, Marie, California
3, Brad, Texas
4, Danny, New York
In the above program, we append a new row into people.csv . For this, we opened the
csv le in 'a' append mode. Then, we write the value of row after the last line of the
people.csv le.
Normal CSV File
We create a normal csv le using writer() method of csv module having default
delimiter comma(,) .
Example 3: Write a python list into person.csv le
import csv
csvData = [['Person', 'Age'], ['Peter', '22'], ['Jasmine', '21'], ['Sam',
with open('person.csv', 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(csvData)
RECOMMENDED READINGS
csvFile.close()
TUTORIAL EXAMPLES
When we open the person.csv le with text editor, then it will show :
Person,Age
Peter,22
Jasmine,21
Sam,24
In the above program, we use csv.writer() function to write data from a list csvData into
a csv le person.csv .
Note: The writerow() method writes one row at a time. If you need to write all the data
at once you can use writerows() method.
CSV Files with quotes
We can write the csv le with quotes, by registering new dialects using
csv.register_dialect() class of csv module.
Example 4 : Write into person1.csv le
import csv
person = [['SN', 'Person', 'DOB'],
['1', 'John', '18/1/1997'],
['2', 'Marie','19/2/1998'],
['3', 'Simon','20/3/1999'],
['4', 'Erik', '21/4/2000'],
['5', 'Ana', '22/5/2001']]
csv.register_dialect('myDialect',
quoting=csv.QUOTE_ALL,
skipinitialspace=True)
with open('person1.csv', 'w') as f:
writer = csv.writer(f, dialect='myDialect')
for row in person:
writer.writerow(row)
f.close()
When we open person1.csv le, we get following output :
"SN","Person","DOB"
"1","John","18/1/1997"
"2","Marie","19/2/1998"
RECOMMENDED READINGS
"3","Simon","20/3/1999"
"4","Erik","21/4/2000"
TUTORIAL EXAMPLES
"5","Ana","22/5/2001"
In above program, we register a dialect named myDialect . Inside myDialect we use
quoting=csv.QUOTE_ALL to write the double quote on all the values.
CSV les with Custom Delimiters
A delimiter is a string used to separate elds. The default value is comma(,) .
We can write csv le having custom delimiter by registering a new dialect with the help
of csv.register_dialect() .
Example 5 : Writing with custom delimiter as pipe(|)
import csv
person = [['SN', 'Person', 'DOB'],
['1', 'John', '18/1/1997'],
['2', 'Marie','19/2/1998'],
['3', 'Simon','20/3/1999'],
['4', 'Erik', '21/4/2000'],
['5', 'Ana', '22/5/2001']]
csv.register_dialect('myDialect',
delimiter = '|',
quoting=csv.QUOTE_NONE,
skipinitialspace=True)
with open('dob.csv', 'w') as f:
writer = csv.writer(f, dialect='myDialect')
for row in person:
writer.writerow(row)
f.close()
RECOMMENDED READINGS
When TUTORIAL
we open dob.csv
EXAMPLES
le, we get following output:
SN|Person|DOB
1|John|18/1/1997
2|Marie|19/2/1998
3|Simon|20/3/1999
4|Erik|21/4/2000
5|Ana|22/5/2001
In the above program, we register a dialect with delimiter as pipe(|) . Then we write a
list into a csv le dob.csv .
CSV File with a Lineterminator
A lineterminator is a string used to terminate lines produced by writer. The default
value is \r\n .
We can write csv le with a lineterminator in Python by registering new dialects using
csv.register_dialect() class of csv module
Example 6 : Writing csv le using a lineterminator
import csv
csvData = [['Fruit', 'Quantity'], ['Apple', '5'], ['Orange', '7'], ['Mang
csv.register_dialect('myDialect', delimiter = '|', lineterminator = '\r\n\
with open('lineterminator.csv', 'w') as f:
writer = csv.writer(f, dialect='myDialect')
writer.writerows(csvData)
f.close()
When we open the lineterminator.csv le, we get following output:
Fruit|Quantity
Apple|5
Orange|7
Mango|8
In above code, we register a new dialects as myDialect . Then, we use delimiter='|' where
a | is considered as column separator. After that, we use lineterminator='\r\n\r\n' where
RECOMMENDED READINGS
each row separates after every two lines.
TUTORIAL EXAMPLES
Note : Python's CSV module only accepts \r\n , \n or \r as lineterminator.
CSV File with quotechars
We can write the csv le with custom quote characters, by registering new dialects using
csv.register_dialect() class of csv module.
Example 7: Writing CSV FIle with quotechars
import csv
csvData = [['SN', 'Items'], ['1', 'Pen'], ['2', 'Book'], ['3', 'Copy']]
csv.register_dialect('myDialect',
delimiter = '|',
quotechar = '"',
quoting=csv.QUOTE_ALL,
skipinitialspace=True)
with open('quotechars.csv', 'w') as csvFile:
writer = csv.writer(csvFile, dialect='myDialect')
writer.writerows(csvData)
print("writing completed")
csvFile.close()
Output:
"SN"|"Items"
"1"|"Pen"
"2"|"Book"
"3"|"Copy"
In the above program, we register a dialect called myDialect. Then we use delimiter as
pipe(|) and quotechar as doublequote '"' .
Writing CSV le into a Dictionary
Using DictWriter() class of csv module, we can write a csv le into a dictionary. It works
similar to the writer() function but creates an object which maps data into a dictionary.
The keys are given by the eldnames parameter.
Example 8: WritingREADINGS
RECOMMENDED dictionary into peak.csv le
import
TUTORIAL
csv EXAMPLES
data = [{'mountain' : 'Everest', 'height': '8848'},
{'mountain' : 'K2 ', 'height': '8611'},
{'mountain' : 'Kanchenjunga', 'height': '8586'}]
with open('peak.csv', 'w') as csvFile:
fields = ['mountain', 'height']
writer = csv.DictWriter(csvFile, fieldnames=fields)
writer.writeheader()
writer.writerows(data)
print("writing completed")
csvFile.close()
When we open peak.csv le, it will contain following output :
mountain,height
Everest,8848
K2,8611
Kangchenjunga,8586
In the above program, we use eldnames as headings of each column in csv le. Then,
we use a DictWriter() to write dictionary data into peak.csv le.
Example 9: Writing dictionary into grade.csv le with custom dialects
import csv
csv.register_dialect('myDialect', delimiter = '|', quoting=csv.QUOTE_ALL)
with open('grade.csv', 'w') as csvfile:
fieldnames = ['Name', 'Grade']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, dialect="myDi
writer.writeheader()
writer.writerows([{'Grade': 'B', 'Name': 'Alex'},
{'Grade': 'A', 'Name': 'Bin'},
{'Grade': 'C', 'Name': 'Tom'}])
print("writing completed")
When we open grade.csv le, it will contain following output:
"Name"|"Grade"
"Alex"|"B"
"Bin"|"A"
"Tom"|"C"
RECOMMENDED READINGS
In the above program, we create a custom dialect called myDialect with pipe(|) as
Then, use eldnames as headings of each column in csv
delimiter.
TUTORIAL EXAMPLES
le. Finally, we use
a
DictWriter() to write dictionary data into grade.csv le.
Python Tutorial
Python Introduction
Python Flow Control
Python Functions
Python Datatypes
Python Files
Python Object & Class
Python Advanced Topics
Python Date and time
Receive the latest tutorial to improve your programming skills.
Enter Email Address* Join
RECOMMENDED READINGS
Get Latest Updates on Programiz
TUTORIAL EXAMPLES
Enter Your Email
Subscribe
TUTORIALS
Python Tutorials
C Tutorials
Java Tutorials
Kotlin Tutorials
C++ Tutorials
Swift Tutorials
R Tutorials
Algorithms Tutorials
EXAMPLES
Python Examples
C Examples
Java Examples
Kotlin Examples
C++ Examples
R Examples
COMPANY
About
Advertising
Contact
LEGAL
Privacy Policy
Terms And Conditions
App's Privacy Policy
App's Terms And Conditions
Copyright © Parewa Labs Pvt. Ltd. All rights reserved.
RECOMMENDED READINGS