我正在尝试创建一个字典,用于计算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而不会出现相同的错误。
答案 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