【问题标题】:List index out of range using csv module使用 csv 模块列出超出范围的索引
【发布时间】:2013-12-28 18:48:59
【问题描述】:

我正在使用此信息(已将文件下载到我的计算机)http://www.genome.gov/admin/gwascatalog.txt

写了这篇

import csv

path = '/Users/mtchavez/Documents/ALS/Diseasome/GWAS.txt'
read_file = open(path)
reader = csv.reader(read_file, delimiter = '\t')
fieldnames = reader.next()

rows = list(reader)
read_file.close()

write_file = open('datatest.csv', 'wb')
writer = csv.writer(write_file, delimiter = '\t')
writer.writerow(('disease', 'genes'))

disease_gene = dict()
for row in rows:
    disease = row[7]
    reported_genes = row[13]

但我收到一条错误消息:

     File "data1.py", line 18, in <module>
    disease = row[7]
IndexError: list index out of range

【问题讨论】:

  • print(row) 会得到什么?

标签: python list csv indexing range


【解决方案1】:

此 csv 文件末尾有一个空行,它将创建一个空行。删除最后一行,代码就可以正常工作了。

【讨论】:

    【解决方案2】:

    尝试过滤空行:

    for row in rows:
        if not row: continue
        disease = row[7]
        reported_genes = row[13]
    

    或者更具体地说,过滤所需的长度:

    for row in rows:
        if len(row) != EXPECTED_LENGTH_OF_RECORD: continue
        disease = row[7]
        reported_genes = row[13]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多