阅读csv,然后枚举

时间:2013-04-22 04:40:16

标签: python csv enumerate

目前,我的代码中直接有一个列表并使用枚举,因此我可以使用列表索引号为用户选择其中一个项目。看起来像这样(只包括标题行)

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的范围。试过每一个组合,但没有任何作用

1 个答案:

答案 0 :(得分:6)

enumerate(...)适用于任何可迭代的

import csv
with open ('fmpList.csv', 'rU') as csvfile: 
    next(csvfile, None) # skip header
    plotlist = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
    for i, row in enumerate(plotlist):
        print "[%d] %s" % (i, row)
相关问题