【发布时间】:2013-04-22 04:40:15
【问题描述】:
目前,我的代码中直接有一个列表,并且正在使用枚举,因此我可以使用列表索引号让用户选择其中一项。看起来像这样(仅包括标题行)
fmpList = [['Date', 'ID', 'Plot No', 'Modified', 'Lat', 'Long']......
for item in enumerate(fmpList[]):
print "[%d] %s" % item
这很好用,但我不想将列表放入函数中,而是从文件中读取 csv。我以前这样做的替代方法是......
import csv
with open ('fmpList.csv', 'rU') as csvfile:
next (csvfile, None)
plotlist = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
for row in enumerate (plotlist):
print '[%s]' %(item[2])
这也有效,但我似乎无法结合 2... 读取 csv 文件,然后枚举以便能够根据索引进行选择。 非常感谢您的帮助
编辑: 所以现在我得到了我想要的工作代码......
import csv
with open ('fmpList.csv', 'rU') as csvfile:
next (csvfile, None)
plotlist = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
for row in enumerate (plotlist):
print '[%s]' %(item[2])
但最后一行并没有给我只显示第 2 列。事实上,我在第 0 列(索引号)和第 2 列(情节名称)之后。 [0] 给出第一列......很酷,但任何大于 1 的数字都会给出 IndexError: ..out of range。尝试了所有组合,但没有任何效果
【问题讨论】:
-
for i,row in enumerate(plotlist)? -
您的 CSV 格式如何。分隔符可能只有一个字符,现在你有制表符和空格
-
csv 数据只是用逗号分隔。我实际上只是添加了制表符分隔符,但没有删除空格
-
感谢 sapi- 当我合并 2 时,我有那行,但需要在 plotlist 中省略 for 行,只需要.. for item in enumerate (fmpList[]): 看起来它正在工作现在。愚蠢的我