📌 Quick Info

  • Topic: Working with CSV files in Python
  • Target Audience: Beginners who know file handling and dictionaries
  • Goal: Understand how to read, write, and process CSV data

1. Introduction

"I could save data to a JSON file. But every spreadsheet I've ever seen exports to CSV. So I learned how to work with CSVs — and suddenly I could process real data."

2. What Is a CSV?

CSV stands for Comma-Separated Values. It's a plain text file where each line is a row, and each value is separated by a comma.

Example — a list of users:

name,age,city
Ali,25,Karachi
Sara,30,Lahore
Ahmed,28,Islamabad

That's it. No formatting, no colors, no formulas. Just text.

3. Why CSV Matters

  • Every spreadsheet exports to CSV — Excel, Google Sheets, Numbers
  • Every database can export to CSV — MySQL, PostgreSQL, SQLite
  • Every data tool imports CSV — pandas, R, Tableau

If you can read and write CSV in Python, you can process real-world data.

4. Reading a CSV (The Manual Way)

You could read a CSV like a normal text file:

with open("users.csv", "r") as file: for line in file: print(line.strip().split(",")) 

Output:

['name', 'age', 'city'] ['Ali', '25', 'Karachi'] ['Sara', '30', 'Lahore'] 

It works — but notice that "25" is a string, not a number. And if any value contains a comma (like an address), this breaks.

That's why Python has a built-in csv module.

5. Reading a CSV (The Right Way)

import csv with open("users.csv", "r") as file: reader = csv.DictReader(file) for row in reader: print(row) 

Output:

{'name': 'Ali', 'age': '25', 'city': 'Karachi'} {'name': 'Sara', 'age': '30', 'city': 'Lahore'} 

DictReader uses the first row as headers, and each row becomes a dictionary. Much cleaner.

6. Writing a CSV

import csv users = [ {"name": "Ali", "age": 25, "city": "Karachi"}, {"name": "Sara", "age": 30, "city": "Lahore"} ] with open("users.csv", "w", newline="") as file: writer = csv.DictWriter(file, fieldnames=["name", "age", "city"]) writer.writeheader() writer.writerows(users) 

What’s in the file:

name,age,city Ali,25,Karachi Sara,30,Lahore 

Notice newline="". Without it, Python adds extra blank lines on Windows.

7. Real Example (Processing Data)

import csv with open("users.csv", "r") as file: reader = csv.DictReader(file) adults = [row for row in reader if int(row["age"]) >= 30] with open("adults.csv", "w", newline="") as file: writer = csv.DictWriter(file, fieldnames=["name", "age", "city"]) writer.writeheader() writer.writerows(adults) 

That’s a mini data pipeline: read. filter, write. Ten lines.

8. Common Mistakes Beginners Make

  • Mistake 1: Forgetting newline=”” when writing. You get blank lines between every row on windows.
  • Mistake 2: Assuming values are numbers CSV values are always strings. Convert with int() or float() if needed.
  • Mistake 3: Not handling missing files. Always check with os.path.exists() before reading.
  • Mistake 4: Using wrong delimiter. Some CSVs use semicolons or tabs. Pass delimiter=”;” or delimiter=”\t” if needed.

9. What I learned

  • CSV is everywhere — it's the default export of every spreadsheet and database
  • csv.DictReader gives you dictionaries instead of lists
  • csv.DictWriter lets you write rows with named fields
  • newline="" prevents blank lines on Windows
  • All CSV values are strings — convert them yourself

10. Conclusion

"CSV files felt boring until I realized they're how the real world moves data around. Every spreadsheet, every database export, every report — it's all CSV underneath. Learning this opened up a new kind of project.”