In [1]:
import csv
from pathlib import Path
import os
import json
In [2]:
home = os.environ['HOME']
In [3]:
f = Path('{HOME}/Downloads/common-only.csv'.format(HOME=home))
In [6]:
def quoted(val):
isnum = True
try:
float(val)
except ValueError:
isnum = False
if val in {'TRUE', 'FALSE'}:
return val[0] + val[1:].lower()
elif val.startswith('{'):
return json.loads(val)
elif (not isnum):
return '"{}"'.format(val)
else:
return val
In [7]:
with open(f, 'r', newline='') as plainrdr:
rdr = csv.reader(plainrdr, delimiter=',', quotechar='"')
head = next(rdr)
keys = head
print(keys)
excludes = {'id', 'corporation_pk', 'valuation_id', 'backsolve_id','created', 'created_by_id', 'is_void', 'modified', 'captable_id'}
global data
data=[]
for line in rdr:
la = line
d = {key: quoted(val) for key, val in zip(keys, la) if key not in excludes and val != 'NULL'}
data.append('CaptableData(\n' + '\n'.join(' {}={},'.format(k,v) for k,v in d.items()) + '\n),')
In [8]:
with open('{HOME}/tmp/data_sample.txt'.format(HOME=home), 'w') as out:
out.write('\n'.join(data))
In [ ]:
data