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)