You are on page 1of 10

  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 

You might also like