15.4. CSV Parameters

15.4.1. SetUp

>>> import csv
>>> from pprint import pprint

15.4.2. Parametrized Writer

  • delimiter=','

  • quotechar='"'

  • lineterminator='\n'

  • quoting=csv.QUOTE_ALL

>>> DATA = [
...     ('firstname', 'lastname', 'age'),
...     ('Alice', 'Apricot', 30),
...     ('Bob', 'Blackthorn', 31),
...     ('Carol', 'Corn', 32),
...     ('Dave', 'Durian', 33),
...     ('Eve', 'Elderberry', 34),
...     ('Mallory', 'Melon', 15),
... ]
>>>
>>> with open('/tmp/myfile.csv', mode='wt', encoding='utf-8') as file:
...     writer = csv.writer(file, delimiter=',', quotechar='"', lineterminator='\n', quoting=csv.QUOTE_ALL)
...     writer.writerows(DATA)

Result:

>>> print(open('/tmp/myfile.csv').read())
"firstname","lastname","age"
"Alice","Apricot","30"
"Bob","Blackthorn","31"
"Carol","Corn","32"
"Dave","Durian","33"
"Eve","Elderberry","34"
"Mallory","Melon","15"

15.4.3. Parametrized DictWriter

  • delimiter=','

  • quotechar='"'

  • lineterminator='\n'

  • quoting=csv.QUOTE_ALL

  • csv.DictWriter(file, fieldnames, delimiter=',', quotechar='"', lineterminator='\n', quoting=csv.QUOTE_ALL)

>>> DATA = [
...     {'firstname': 'Alice', 'lastname': 'Apricot', 'age': 30},
...     {'firstname': 'Bob', 'lastname': 'Blackthorn', 'age': 31},
...     {'firstname': 'Carol', 'lastname': 'Corn', 'age': 32},
...     {'firstname': 'Dave', 'lastname': 'Durian', 'age': 33},
...     {'firstname': 'Eve', 'lastname': 'Elderberry', 'age': 34},
...     {'firstname': 'Mallory', 'lastname': 'Melon', 'age': 15},
... ]
>>>
>>>
>>> fieldnames = sorted(set(str(key) for row in DATA for key in row.keys()))
>>>
>>> with open('/tmp/myfile.csv', mode='wt', encoding='utf-8') as file:
...     result = csv.DictWriter(file, fieldnames, delimiter=',', quotechar='"', lineterminator='\n', quoting=csv.QUOTE_ALL)
...     result.writeheader()
...     result.writerows(DATA)
29

Result:

>>> print(open('/tmp/myfile.csv').read())
"age","firstname","lastname"
"30","Alice","Apricot"
"31","Bob","Blackthorn"
"32","Carol","Corn"
"33","Dave","Durian"
"34","Eve","Elderberry"
"15","Mallory","Melon"

15.4.4. Parametrized Reader

Data:

$ cat /tmp/myfile.csv
"firstname","lastname","age"
"Alice","Apricot","30"
"Bob","Blackthorn","31"
"Carol","Corn","32"
"Dave","Durian","33"
"Eve","Elderberry","34"
"Mallory","Melon","15"

Usage:

>>> with open('/tmp/myfile.csv', mode='rt') as file:
...     reader = csv.reader(file, delimiter=',', quoting=csv.QUOTE_ALL, quotechar='"', lineterminator='\n')
...     result = list(reader)

Result:

>>> pprint(result)
[['firstname', 'lastname', 'age'],
 ['Alice', 'Apricot', '30'],
 ['Bob', 'Blackthorn', '31'],
 ['Carol', 'Corn', '32'],
 ['Dave', 'Durian', '33'],
 ['Eve', 'Elderberry', '34'],
 ['Mallory', 'Melon', '15']]

15.4.5. Parametrized DictReader

Data:

$ cat /tmp/myfile.csv
"firstname","lastname","age"
"Alice","Apricot","30"
"Bob","Blackthorn","31"
"Carol","Corn","32"
"Dave","Durian","33"
"Eve","Elderberry","34"
"Mallory","Melon","15"

Usage:

>>> with open('/tmp/myfile.csv', mode='rt', encoding='utf-8') as file:
...     reader = csv.DictReader(file, delimiter=',', quoting=csv.QUOTE_ALL, quotechar='"', lineterminator='\n')
...     result = list(reader)

Result:

>>> pprint(result, sort_dicts=False)
[{'firstname': 'Alice', 'lastname': 'Apricot', 'age': '30'},
 {'firstname': 'Bob', 'lastname': 'Blackthorn', 'age': '31'},
 {'firstname': 'Carol', 'lastname': 'Corn', 'age': '32'},
 {'firstname': 'Dave', 'lastname': 'Durian', 'age': '33'},
 {'firstname': 'Eve', 'lastname': 'Elderberry', 'age': '34'},
 {'firstname': 'Mallory', 'lastname': 'Melon', 'age': '15'}]