[Python-checkins] python/nondist/sandbox/csv csv.py,1.26,1.27

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Mon, 10 Feb 2003 07:06:49 -0800


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

Modified Files:
	csv.py 
Log Message:
add default value for short rows (#fieldnames > len(row))


Index: csv.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/csv.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** csv.py	10 Feb 2003 03:47:21 -0000	1.26
--- csv.py	10 Feb 2003 15:06:46 -0000	1.27
***************
*** 59,65 ****
  
  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)
  
--- 59,67 ----
  
  class DictReader:
!     def __init__(self, f, fieldnames, rest=None, restval=None,
!                  dialect="excel", *args):
          self.fieldnames = fieldnames    # list of keys for the dict
          self.rest = rest                # key to catch long rows
+         self.restval = restval          # default value for short rows
          self.reader = reader(f, dialect, *args)
  
***************
*** 67,72 ****
          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
  
--- 69,79 ----
          row = self.reader.next()
          d = dict(zip(self.fieldnames, row))
!         lf = len(self.fieldnames)
!         lr = len(row)
!         if lf < lr and self.rest != None:
!             d[self.rest] = row[lf:]
!         elif lf > lr:
!             for key in self.fieldnames[lr:]:
!                 d[key] = self.restval
          return d