[Python-checkins] python/nondist/sandbox/csv csv.py,1.25,1.26
montanaro@users.sourceforge.net
montanaro@users.sourceforge.net
Sun, 09 Feb 2003 19:47:23 -0800
Update of /cvsroot/python/python/nondist/sandbox/csv
In directory sc8-pr-cvs1:/tmp/cvs-serv8462
Modified Files:
csv.py
Log Message:
add DictReader and DictWriter
Index: csv.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/csv.py,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** csv.py 8 Feb 2003 15:22:55 -0000 1.25
--- csv.py 10 Feb 2003 03:47:21 -0000 1.26
***************
*** 56,57 ****
--- 56,87 ----
delimiter = '\t'
register_dialect("excel-tab", excel_tab)
+
+
+ class DictReader:
+ def __init__(self, f, fieldnames, rest=None, dialect="excel", *args):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.rest = rest # key to catch long rows
+ self.reader = reader(f, dialect, *args)
+
+ def next(self):
+ row = self.reader.next()
+ d = dict(zip(self.fieldnames, row))
+ if len(self.fieldnames) < len(row) and self.rest != None:
+ d[self.rest] = row[len(self.fieldnames):]
+ return d
+
+
+ class DictWriter:
+ def __init__(self, f, fieldnames, dialect="excel", *args):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.writer = writer(f, dialect, *args)
+
+ def writerow(self, rowdict):
+ row = [rowdict.get(key, "") for key in self.fieldnames]
+ return self.writer.writerow(row)
+
+ def writerows(self, rowdicts):
+ rows = []
+ for rowdict in rowdicts:
+ rows.append([rowdict.get(key, "") for key in self.fieldnames])
+ return self.writer.writerows(rows)