Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion gtfs/entity/unmapped_entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ def __init__(self, **kwargs):
attrvaluestr = kwargs[attrname]
if attrvaluestr == '':
attrvalue = None
else:
elif attrtype == str:
attrvalue = unicode(attrvaluestr)
else:
attrvalue = attrtype( attrvaluestr )

setattr( self, attrname, attrvalue )
Expand Down
19 changes: 14 additions & 5 deletions gtfs/feed.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ def __init__(self,header,row):
self.row = row

def to_dict(self):
return dict([(fieldname,self.row[fieldindex] if fieldindex<len(self.row) else None) for fieldname,fieldindex in self.header.items()])
return dict([(fieldname,self.row[fieldindex] if fieldindex<len(self.row)
else None) for fieldname,fieldindex in self.header.items()])

def __repr__(self):
return repr(self.to_dict())
Expand Down Expand Up @@ -41,8 +42,8 @@ def next(self):
return Record( self.header, self.rows.next() )

class Feed(object):
"""A Feed is a collection of CSV files with headers, either zipped into an archive
or loose in a folder"""
"""A Feed is a collection of CSV files with headers, either zipped into an
archive or loose in a folder"""

def __init__(self, filename):
self.filename = filename
Expand All @@ -51,15 +52,23 @@ def __init__(self, filename):
if not os.path.isdir( filename ):
self.zf = ZipFile( filename )

def unicode_csv_reader(self, content_iter):
reader = csv.reader( [ x.encode("utf-8") for x in iterdecode(content_iter,
"utf-8") ] )
for row in reader:
yield [ unicode(x, "utf-8") for x in row ]
return

def get_rows(self, filename):
if self.zf:
try:
contents = self.zf.read(filename)
except KeyError:
raise KeyError( "%s is not present feed"%filename )
return csv.reader( iterdecode( contents.split("\n"), "utf-8" ) )
return self.unicode_csv_reader( contents.split("\n") )
else:
return csv.reader( iterdecode( open( os.path.join( self.filename, filename ) ), "utf-8" ) )
return self.unicode_csv_reader( open( os.path.join( self.filename,
filename ) ) )

def get_table(self, filename):
rows = self.get_rows( filename )
Expand Down
Binary file modified test/data/sample-feed.zip
Binary file not shown.