[Python-checkins] python/nondist/sandbox/csv csv.py,1.22,1.23

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Wed, 05 Feb 2003 20:49:31 -0800


Update of /cvsroot/python/python/nondist/sandbox/csv
In directory sc8-pr-cvs1:/tmp/cvs-serv29808

Modified Files:
	csv.py 
Log Message:
add optional fieldnames and restfield params to csv.reader() which allow the
reader to return rows as dicts


Index: csv.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/csv.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** csv.py	5 Feb 2003 02:21:42 -0000	1.22
--- csv.py	6 Feb 2003 04:49:29 -0000	1.23
***************
*** 94,99 ****
  
  class reader(_OCcsv):
!     def __init__(self, iterobj, dialect = 'excel', **options):
          self.iterobj = iter(iterobj)
          _OCcsv.__init__(self, dialect, **options)
  
--- 94,103 ----
  
  class reader(_OCcsv):
!     def __init__(self, iterobj, dialect = 'excel',
!                  fieldnames=None, restfield=None,
!                  **options):
          self.iterobj = iter(iterobj)
+         self.fieldnames = fieldnames
+         self.restfield = restfield
          _OCcsv.__init__(self, dialect, **options)
  
***************
*** 105,108 ****
--- 109,119 ----
              fields = self.parser.parse(self.iterobj.next())
              if fields:
+                 if self.fieldnames is not None:
+                     lf = len(self.fieldnames)
+                     result = dict(zip(self.fieldnames, fields))
+                     if (lf < len(fields) and
+                         self.restfield is not None):
+                         result[self.restfield] = fields[lf:]
+                     return result
                  return fields