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_ALLcsv.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'}]