CSV

What is CSV?

CSV files are commonly used to store tabular data. Python's built-in csv module makes reading and writing CSVs easy and flexible. Set it up by first importing it.

import csv

Reading CSV Files

Basic Reader - reads each row as a list:

with open('file.csv', newline='') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)  # Row is a list of values

DictReader - reads each row as a dictionary using the header row

with open('file.csv', newline='') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['column_name'])  # Access values using column names

Specifying a delimiter (e.g., semicolon-separated)

with open('file.csv', newline='') as file:
    reader = csv.DictReader(file, delimiter=';')
    for row in reader:
        print(row)

Save a Specific Column to a List

predefined_empty_list = []

with open('file.csv', newline='') as f:
    var2 = csv.DictReader(f)
    for row in var2:
        predefined_empty_list.append(row['rowtitle'])

Splitting Lines Without csv.reader

Sometimes, you may read raw lines and split manually.

for line in open('file.csv'):
    var1, var2 = line.rstrip().split(',')  # Splits each line into two variables

Writing CSV Files

Using DictWriter to write a list of dictionaries

big_list = [
    {'key1': 'value1a', 'key2': 'value2a'},
    {'key1': 'value1b', 'key2': 'value2b'},
    # ...
]

with open('newfile.csv', 'w', newline='') as output_csv:
    fields = ['key1', 'key2']
    output_writer = csv.DictWriter(output_csv, fieldnames=fields)

    output_writer.writeheader()  # Writes the header row
    for item in big_list:
        output_writer.writerow(item)

Using csv.writer for basic writing

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['value1', 'value2'])  # Writes a single row

Looping through dictionary items

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    for key, value in some_dict.items():
        writer.writerow([key, value])

Summary

Code Description
import csv Import the CSV module
csv.reader(file) Reads rows as lists
csv.DictReader(file) Reads rows as dictionaries using header row
delimiter=';' Specify a different delimiter
csv.writer(file) For writing rows (as lists)
csv.DictWriter(file, fieldnames=[...]) For writing rows (as dictionaries)
.writeheader() Writes the column headers
.writerow({...}) Writes a single row
.split(',') Splits a string into list values (manual approach)