【问题标题】:Read csv, then enumerate读取 csv,然后枚举
【发布时间】: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[]): 看起来它正在工作现在。愚蠢的我

标签: python csv enumerate


【解决方案1】:

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)

【讨论】:

  • 效果很好,但我也有 for row in enumerate(plotlist[1:]): 摆脱标题行,但现在我得到一个 TypeError。我该怎么做?
  • @Op.Ivy 你不能使用列表切片语法对文件进行切片,我刚刚添加了对next 的调用,以将文件迭代器前进一个项目以跳过标题跨度>
  • 太棒了,谢谢。如果我可以推动另一种解决方案。如果我只想显示第 2 列而不是全部 7 列怎么办?
  • @Op.Ivy 我假设第 2 列是 2nd 列,所以 0 索引您只需将 row 更改为 row[3]
  • 这就是我的想法,但我得到 TypeError: %d format: a number is required, not list
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多