/ Published in: Python
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
import csv def fix_name(n): 'Fixes a string to be nicer (usable) variable names.' return n.replace(' ','_').replace('.','_') def read_csv(inf, close_file=True): 'Reads a csv file in as a list of objects' def from_csv_line(l, h): return DictObj(dict(zip(h, l))) iter = csv.reader(inf).__iter__() header = map(fix_name, iter.next()) for i in iter: yield from_csv_line(i, header) if close_file: inf.close() def write_csv(out, objs, cols=None, close_file=True): 'Writes a list of dicts out as a csv file.' def to_csv_line(obj, header): def lookup_or_empty(o, k, default=''): if k in o: return o[k] return default return map(lambda h : lookup_or_empty(obj,h), header) iter = objs.__iter__() output = csv.writer(out) first = iter.next() if cols is None: cols = sorted(first.keys()) output.writerow(cols) output.writerow(to_csv_line(first, cols)) output.writerows(map(lambda x: to_csv_line(x, cols), iter)) if close_file: out.close()