Learn Python Programming
Start with getting started, installation, and core basics. Clear explanations and practical examples to help you learn faster.
Reading CSV Files in Python
Python's csv module provides two main approaches for reading CSV files: csv.reader (list-based) and csv.DictReader (dictionary-based). Both handle quoting, escaping, and delimiters automatically.
Basic Reading with csv.reader
import csv
# csv.reader returns each row as a list of strings
with open("employees.csv", "r") as f:
reader = csv.reader(f)
# First row is usually the header
header = next(reader)
print(header) # ["name", "department", "salary"]
# Iterate remaining rows
for row in reader:
name, department, salary = row
print(f"{name} works in {department}, earns ${salary}")
# Output:
# Alice works in Engineering, earns $95000
# Bob works in Marketing, earns $72000
Reading with csv.DictReader
import csv
# DictReader uses the first row as keys automatically
with open("employees.csv", "r") as f:
reader = csv.DictReader(f)
# Access columns by header name — much more readable
for row in reader:
print(f"{row[\"name\"]}: {row[\"department\"]} - ${row[\"salary\"]}")
# reader.fieldnames gives you the header list
# print(reader.fieldnames) # ["name", "department", "salary"]
# If CSV has no header, provide field names manually
with open("no_header.csv", "r") as f:
reader = csv.DictReader(f, fieldnames=["id", "name", "email"])
for row in reader:
print(row["email"])
Reading with Different Delimiters
import csv
# Tab-separated values (TSV)
with open("data.tsv", "r") as f:
reader = csv.reader(f, delimiter="\t")
for row in reader:
print(row)
# Semicolon-separated (common in European locales)
with open("data_eu.csv", "r") as f:
reader = csv.reader(f, delimiter=";")
for row in reader:
print(row)
# Pipe-separated
with open("data.txt", "r") as f:
reader = csv.reader(f, delimiter="|")
for row in reader:
print(row)
# Auto-detect delimiter with csv.Sniffer
with open("unknown.csv", "r") as f:
sample = f.read(1024)
dialect = csv.Sniffer().sniff(sample)
f.seek(0)
reader = csv.reader(f, dialect)
for row in reader:
print(row)
Loading CSV into Data Structures
import csv
# Load all rows into a list of dictionaries
def load_csv(filename):
with open(filename, "r") as f:
return list(csv.DictReader(f))
people = load_csv("employees.csv")
print(f"Total records: {len(people)}")
print(people[0]) # {"name": "Alice", "department": "Engineering", ...}
# Filter while reading
def load_filtered(filename, department):
results = []
with open(filename, "r") as f:
for row in csv.DictReader(f):
if row["department"] == department:
results.append(row)
return results
engineers = load_filtered("employees.csv", "Engineering")
# Convert types during reading (CSV values are always strings)
with open("sales.csv") as f:
reader = csv.DictReader(f)
total = 0
for row in reader:
amount = float(row["amount"]) # convert string to float
quantity = int(row["quantity"])
total += amount * quantity
print(f"Total revenue: ${total:,.2f}")
Handling Encoding and Errors
import csv
# Handle UTF-8 BOM (common in Excel exports)
with open("excel_export.csv", "r", encoding="utf-8-sig") as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
# Handle encoding errors gracefully
with open("messy.csv", "r", encoding="utf-8", errors="replace") as f:
reader = csv.reader(f)
for row in reader:
print(row)
# Skip malformed rows
with open("dirty.csv", "r") as f:
reader = csv.reader(f)
for i, row in enumerate(reader, 1):
try:
if len(row) < 3: # expected 3 columns
print(f"Skipping row {i}: too few columns")
continue
process(row)
except Exception as e:
print(f"Error on row {i}: {e}")
- Use
csv.DictReaderfor readable, header-based column access. - All CSV values are strings — cast to
int/floatas needed. - Use
encoding="utf-8-sig"for Excel-exported CSV files with BOM. - Use
csv.Snifferto auto-detect delimiters in unknown files. - Process row-by-row for large files to avoid loading everything into memory.
Frequently Asked Questions
Answers to common Python getting-started questions
Python Programming Tutorial — Learn Python from Scratch
Python is the world's most popular programming language for beginners, data science, AI/ML, web development, and automation. This tutorial teaches Python step-by-step with clear explanations and runnable code examples. You can try every example in our free Python Compiler without installing anything.
Each topic builds on the previous one, starting from installation and Hello World through advanced concepts like decorators, generators, and file I/O. Whether you are a complete beginner or refreshing specific skills, every page gives you immediately usable code.
What This Tutorial Covers
- Getting Started: Install Python, run online, Hello World
- Basics: Variables, data types, type conversion, input/output
- Operators: Arithmetic, comparison, logical, assignment
- Control Flow: if/elif/else, for loops, while, break/continue
- Data Structures: Lists, tuples, sets, dictionaries
- Strings: Methods, slicing, formatting, f-strings
- Functions: Parameters, return values, *args, **kwargs, scope
- OOP: Classes, objects, inheritance, polymorphism
- File I/O: Reading, writing, CSV, JSON handling
- Exceptions: try/except, custom exceptions, raise
- Advanced: List comprehensions, lambda, generators, decorators
- Modules: import, pip, packages, __name__ == "__main__"
Why Learn Python in 2026?
- #1 most popular language: Ranked first on TIOBE, Stack Overflow, and GitHub for multiple years running.
- AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn), data analysis (Pandas, NumPy), and AI development.
- Web development: Django and Flask power backends at companies like Instagram, Spotify, and Pinterest.
- Automation: Automate files, emails, web scraping, reports, and system administration tasks in minutes.
- Beginner-friendly: Clean syntax with enforced indentation makes code readable from day one — no curly braces or semicolons.
- Massive job market: Python developers are in high demand across tech, finance, healthcare, and research.
Python vs Other Languages
| Feature | Python | Java | JavaScript | C++ |
|---|---|---|---|---|
| Syntax | Very clean, readable | Verbose | Moderate | Complex |
| Typing | Dynamic, strong | Static, strong | Dynamic, weak | Static, strong |
| Speed | Slower (interpreted) | Fast (JIT) | Fast (V8 JIT) | Fastest (native) |
| Best For | AI/ML, data, automation | Enterprise, Android | Web frontend/backend | Systems, games |
| Learning Time | 2–4 weeks basics | 4–6 weeks basics | 3–4 weeks basics | 8–12 weeks basics |
How to Get Started
- Run Python online: Use our free Python Compiler — no installation needed.
- Install locally: Download Python 3 from
python.org(Windows/Mac) or useapt install python3(Linux). - Verify: Run
python3 --versionin your terminal to confirm installation. - Choose an editor: VS Code with Python extension (free), PyCharm Community (free), or Jupyter Notebook for data science.
- Follow this tutorial in order: Start from Introduction and work through each topic sequentially.
Frequently Asked Questions
No. Python is designed to be beginner-friendly. This tutorial starts from absolute zero and builds up gradually.
Python 3.10+ is recommended. Python 2 reached end-of-life in 2020. All examples in this tutorial use Python 3 syntax.
Basics (syntax, loops, functions) take 2–4 weeks. Intermediate (OOP, file I/O, modules) adds 3–4 weeks. Specialisation (Django, data science, ML) takes another 2–3 months.
Yes, completely free. No account, no sign-up. All topics and examples available without restriction.
Who Is This For?
Complete beginners choosing their first programming language. Students in CS courses needing a Python reference. Data analysts transitioning from Excel to Python (Pandas). Self-taught developers adding Python to their skill set. Professionals automating repetitive tasks. Anyone preparing for Python coding interviews.