如何返回csv.Dicreader中的所有行

时间:2015-11-02 18:09:36

标签: python csv dictionary

我正在使用csv.Dicreader阅读CSV文件。它只返回最后一行作为dict,但我想返回所有行。

我正在使用字典理解过滤整个row文件,只使用keys:value字典获得两个field,然后进行一些清理。在清洁过程之后,我需要将每行作为dict返回。最后,它应该返回一个字典。

for row in reader:
    data={value:row[key] for key, value in fields.items()}
    if data['binomialAuthority']=='NULL':
        data['binomialAuthority']=None
    data['label']=re.sub(r'\(.*?\)','',data['label']).strip()

return data

输出: data = {{'label':'Argiope','binomialAuthority':无}        {'label':'Tick','binomialAuthority':无}}

2 个答案:

答案 0 :(得分:1)

通过循环的每次迭代,您为var delete_id = $('#delete_id').val();分配一个值。将data想象成一个只有你在其上写下的最后一件事的小标记牌。在循环结束时,它将引用分配的最后一项。

如果您只想打印结构,请将data语句移到循环中。

如果您想要一个包含多个dicts的数据结构,那么您需要创建一个列表,然后在循环中追加它。请注意,加载大文件时会占用大量内存。

例如

print

答案 1 :(得分:0)

最好的方法是将它附加到列表中,然后使用for循环来展开列表,以便获得dict类型。

my_list = []
for row in reader:        
   data = '...'
   my_list.append(data)
for i in my_list:
   print (i)