Python 2.6(作业所必需的)
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建议将阅读器行放入列表中。它完全符合我的想法。谢谢大家。
答案 0 :(得分:1)
你确实是正确的,迭代行一次是DictReader
提供的。所以你的选择是:
DictReader
并再次迭代(似乎很浪费)此外,如果您只有列表和字段名称,则不需要DictReader
来执行相同的操作。如果您知道数据相对简单(例如数据中没有逗号和所有相同数量的项目),那么您可以简单地执行:
merged = [zip(fieldnames, row.split(",")) for row in my_list]
print merged