Python 3

home

CSV Parsing Using the csv Module

csv Module: Reading

The module performs all delimiter parsing and removal, both comma and newline


import csv

filename = '../revenue.csv'

fh = open(filename)                # 'file' object
reader = csv.reader(fh)            # csv.reader object
headers = next(reader)             # ['company','state','price']

mysum = 0.0

for fields in reader:              # ["Haddad's", 'PA', '239.5']
    row_val = fields[-1]           # '239.5'
    float_val = float(row_val)     # 239.5
    mysum = mysum + float_val      # 239.5

print(mysum)                       # 662.010000000002




csv Module: Writing

The module handles the delimiters, so we only need to pass to it a list of values for each row.


import csv

wfh = open('new_file.txt', 'w', newline='')        # <B>newline=''</B> is necessary for Windows users

writer = csv.writer(wfh)

# writing a header row
writer.writerow(['id', 'first_name', 'last_name'])

# writing rows one at a time
writer.writerow(['23', 'James', 'Wilson'])
writer.writerow(['24', 'Pete', 'Johnson'])

# writing multiple rows
writer.writerows([['25', 'Marie', 'Davidson'], ['26',
                  'Donna', 'Peterville']])

wfh.close()




csv Module: DictReader

This class parses each line into a convenient dict


import csv

filename = '../revenue.csv'

fh = open(filename)                # 'file' object
dreader = csv.DictReader(fh)       # csv.DictReader object

headers = dreader.fieldnames       # ['company', 'state', 'price']

mysum = 0.0

for row in reader:                 # {'company': "Haddad's", 'state': 'PA', 'price': 239.5'}
    row_val = row['price']         # '239.5'
    float_val = float(row_val)     # 239.5
    mysum = mysum + float_val      # 239.5

print(mysum)                       # 662.010000000002




csv Module: DictWriter

This class writes a convenient dict to each line of the file


import csv

wfh = open('new_file.txt', 'w', newline='')        # <B>newline=''</B> is necessary for Windows users

dwrite = csv.DictWriter(wfh, ['company', 'state', 'price'])

# write the header row (based on the fieldnames supplied to DictWriter)
dwrite.writeheader()

# writing rows one at a time
dwrite.writerow({'company': 'Alpha Corp', 'state': 'PA', 'price': '99.39'})
dwrite.writerow({'company': 'Beta Corp', 'state': 'CA', 'price': '101.03'})


# writing multiple rows
writer.writerows([{'company': 'Alpha Corp', 'state': 'PA', 'price': '99.39'},
{'company': 'Beta Corp', 'state': 'CA', 'price': '101.03'}])

wfh.close()




[pr]