使用csv模块列出索引超出范围

时间:2013-12-11 00:30:11

标签: python list csv indexing range

我正在使用此信息(将文件下载到我的计算机上)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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试过滤空行:

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]