def itervoters(self):
if self.voter_file_content:
if type(self.voter_file_content) == unicode:
content = self.voter_file_content.encode('utf-8')
else:
content = self.voter_file_content
# now we have to handle non-universal-newline stuff
# we do this in a simple way: replace all \r with \n
# then, replace all double \n with single \n
# this should leave us with only \n
content = content.replace('\r','\n').replace('\n\n','\n')
voter_stream = io.BytesIO(content)
else:
voter_stream = open(self.voter_file.path, "rU")
#reader = unicode_csv_reader(voter_stream)
reader = unicodecsv.reader(voter_stream, encoding='utf-8')
for voter_fields in reader:
# bad line
if len(voter_fields) < 1:
continue
return_dict = {'voter_id': voter_fields[0].strip()}
if len(voter_fields) > 1:
return_dict['email'] = voter_fields[1].strip()
else:
# assume single field means the email is the same field
return_dict['email'] = voter_fields[0].strip()
if len(voter_fields) > 2:
return_dict['name'] = voter_fields[2].strip()
else:
return_dict['name'] = return_dict['email']
yield return_dict
评论列表
文章目录