的Python 2.6(必要的作业)Python 2.6我怎样才能重申一个带有列表对象的DictReader对象?
import csv
list = ['apple,whiskey,turtle', 'orange,gin,wolf', 'banana,vodka,sparrow']
fieldNames = ['Fruit', 'Spirit', 'Animal']
reader = csv.DictReader(list,fieldnames= fieldNames)
for row in reader:
print row['Fruit']
for row in reader:
print row['Fruit']
我有一个生成每行项目的统一列表,使得列表对象的一些代码。为了便于使用,我使用了csv模块的DictReader来遍历行并进行所需的任何计算,但是当我尝试第二次迭代时,我没有输出。我怀疑列表的结尾是被当作EOF对待的,但是我无法'重新寻找'到列表的开头来再次进行迭代。
关于我能做什么的建议?也许有比使用CSV更好的方法,它看起来很方便。
新代码
import csv
list = ['apple,"whiskey,rum",turtle', 'orange,gin,wolf', 'banana,vodka,sparrow']
processed = []
fieldNames = ['Fruit', 'Spirit', 'Animal']
reader = csv.DictReader(list,fieldnames= fieldNames, quoatechar = '"')
for row in reader:
processed.append(row)
print row
for row in processed:
print row['Fruit']
for row in processed:
print row['Spirit']
@jonrsharpe建议把读者的行到一个列表。它适用于我想要的。谢谢大家。
的'DictReader'设计遍历文件,而不是商店这一切都在一起去;把它放在一个列表中以“保存”它。 – jonrsharpe 2014-11-14 21:10:03
@jonrsharpe它已经在列表中,但我正在使用DictReader尝试处理数据,就像我将它加载为csv文件一样。这对一次传球效果很好,但对能够进行第二次传球感到好奇。使用csv,我可以将文件重新设置为以file.seek(0)开始,然后再重复一次。想知道是否可以通过DictReader中的列表获得该功能。 – Katanamatata 2014-11-14 21:13:40
不,我的意思是将'DictReader'生成的字典存储在列表中。 – jonrsharpe 2014-11-14 21:14:45