Merged revisions 65605 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r65605 | skip.montanaro | 2008-08-08 17:52:51 -0500 (Fri, 08 Aug 2008) | 1 line

  accept issue 3436
........
This commit is contained in:
Skip Montanaro 2008-08-09 19:44:22 +00:00
parent bea655e53b
commit af8fcfaef5
3 changed files with 54 additions and 4 deletions

View file

@ -68,7 +68,7 @@ register_dialect("excel-tab", excel_tab)
class DictReader:
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
dialect="excel", *args, **kwds):
self.fieldnames = fieldnames # list of keys for the dict
self._fieldnames = fieldnames # list of keys for the dict
self.restkey = restkey # key to catch long rows
self.restval = restval # default value for short rows
self.reader = reader(f, dialect, *args, **kwds)
@ -78,11 +78,25 @@ class DictReader:
def __iter__(self):
return self
@property
def fieldnames(self):
if self._fieldnames is None:
try:
self._fieldnames = next(self.reader)
except StopIteration:
pass
self.line_num = self.reader.line_num
return self._fieldnames
@fieldnames.setter
def fieldnames(self, value):
self._fieldnames = value
def __next__(self):
if self.line_num == 0:
# Used only for its side effect.
self.fieldnames
row = next(self.reader)
if self.fieldnames is None:
self.fieldnames = row
row = next(self.reader)
self.line_num = self.reader.line_num
# unlike the basic reader, we prefer not to return blanks,