Welcome back to 100 Days, 100 Python Topics! Yesterday, we explored file modes and error handling. Today, we’ll focus on CSV files — a very common format for storing tabular data. Whether you’re dealing with spreadsheets, datasets, or exporting data from an app, Python’s csv
module makes working with CSV files a breeze.
1. What is a CSV File?
A CSV (Comma-Separated Values) file is a plain text file where each line represents a row of data, and each value in the row is separated by a comma (or sometimes other delimiters like ;
or \t
).
Example:
Name,Age,Country
John,25,USA
Emma,30,UK
Liam,28,Canada
2. Reading CSV Files
Python provides the built-in csv
module to read CSV files easily.
import csv
# Reading a CSV file
with open('data.csv', mode='r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
Notes:
-
csv.reader()
returns each row as a list of strings. - The first row often contains headers, which you might want to skip using
next(reader)
.
Skipping the header example:
with open('data.csv', 'r') as file:
reader = csv.reader(file)
next(reader) # Skip the first row
for row in reader:
print(row)
3. Writing to CSV Files
To create or modify a CSV file, use csv.writer()
.
import csv
# Writing to a CSV file
data = [
["Name", "Age", "Country"],
["John", 25, "USA"],
["Emma", 30, "UK"]
]
with open('output.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
Key points:
-
newline=''
prevents adding extra blank lines on some systems. - Use
writer.writerow()
for a single row,writer.writerows()
for multiple rows.
4. Using DictReader and DictWriter
Instead of working with lists, DictReader
and DictWriter
let you use column headers as keys.
Reading CSV as dictionaries:
import csv
with open('data.csv', mode='r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['Name'], row['Country'])
Writing CSV from dictionaries:
import csv
data = [
{"Name": "John", "Age": 25, "Country": "USA"},
{"Name": "Emma", "Age": 30, "Country": "UK"}
]
with open('dict_output.csv', mode='w', newline='') as file:
fieldnames = ["Name", "Age", "Country"]
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
5. Handling Different Delimiters
Not all CSVs use commas. Some use semicolons or tabs.
import csv
with open('semicolon_data.csv', mode='r') as file:
reader = csv.reader(file, delimiter=';')
for row in reader:
print(row)
6. Best Practices
✅ Always use with open()
for automatic file closing.
✅ Use newline=''
when writing to avoid extra blank lines.
✅ Consider pandas for large datasets.
✅ Handle encoding (e.g., encoding='utf-8'
) if your CSV contains special characters.
Challenge for You
- Create a CSV file containing at least 5 rows of employee data.
- Write a script to:
- Read the CSV file using
DictReader
. - Add a new column for "Salary".
- Save it back to a new CSV file using
DictWriter
.
Top comments (0)