Python - 列出索引超出范围的csv文件

时间:2017-06-08 10:23:13

标签: python python-2.7

我正在尝试创建一个字典,用于计算csv文件的第13到第17列中每个条目的数量。到目前为止,这是我的代码:

import unicodecsv

with open('hashtag.csv', 'r') as inp, open('hashtag3.csv', 'w') as out:
    writer = unicodecsv.writer(out, delimiter=';', lineterminator='\n',encoding='ISO-8859-1')
    stuff = unicodecsv.reader(inp, delimiter=';', encoding='ISO-8859-1')
    my_dict={}

    for row in stuff:
        for i in range (13,18):
            if row[i] in my_dict:
                my_dict[row[i]]+=1
            else:
                my_dict[row[i]]=1
    print my_dict

然而,它告诉我这个,当我尝试运行它时。

  

my_dict中的row [i]:   IndexError:列表索引超出范围

我尝试单独使用每个索引来找出它出错的地方,并发现它适用于row [13],但不适用于我的范围内的任何其他整数。 我想也许是因为在其他列中,有一些空单元格,但我甚至无法在其他列中执行if-request而不会出现相同的错误。

1 个答案:

答案 0 :(得分:0)

似乎,由于某种原因,row没有所有13-18列 将for循环修改为

for i in range(13,min(len(row),18)):

PS,
您可以考虑使用defaultdict

而不是(有些)繁琐的if row[i] in my_dict
from collections import defaultdict

my_dict = defaultdict(int)  # accessing a new key returns zero
# ...
for row in stuff:
    for i in xrange(13, min(18, len(row))):
        my_dict[row[i]] += 1