2013-07-17 26 views
0

我有一個「asin.txt」文件:的Python 2:IndexError:列表索引超出範圍

in,Huawei1,DE 
out,Huawei2,UK 
out,Huawei3,none 
in,Huawei4,FR 
in,Huawei5,none 
in,Huawei6,none 
out,Huawei7,IT 

我打開這個文件,添加一個OrderedDict

from collections import OrderedDict 
reader = csv.reader(open('asin.txt','r'),delimiter=',') 
reader1 = csv.reader(open('asin.txt','r'),delimiter=',') 
d = OrderedDict((row[0], row[1].strip()) for row in reader) 
d1 = OrderedDict((row[1], row[2].strip()) for row in reader1) 

然後我想創建變量(a,b,c,d),所以如果我們把asin.txt的第一行代碼寫成如下形式:a = in; b = Huawei1; c = Huawei1; d = DE。要做到這一點我使用的是「for」循環:

from itertools import izip 
for (a, b), (c, d) in izip(d.items(), d1.items()): # here 
    try: 
     ....... 

它之前的工作,但現在,出於某種原因,它打印錯誤:

d = OrderedDict((row[0], row[1].strip()) for row in reader) 
IndexError: list index out of range 

我該如何解決呢?

+0

看起來像你的文件減免一些行,只擁有0或1場。 – zhangyangyu

+0

您是否檢查過您文件中的每一行都是您所期望的格式?例如,如果編輯文件,空白行很容易在最後蠕動。 –

回答

0

也許你的文本文件中有一行沒有至少兩個由「,」分隔的字段。例如: -

in,Huawei1 

嘗試找到沿着這些線路的解決方案:

d = OrderedDict((row[0], row[1].strip()) for row in reader if len(row) >= 2) 

l = [] 
for row in reader: 
    if len(row) >= 2: 
    l.append(row[0], row[1].strip()) 
d = OrderedDict(l) 
相關問題