我正在使用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':无}}
答案 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)