0

「asin.txt」ドキュメントがあります。

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 = inb = 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

どうすれば修正できますか?

4

1 に答える 1

0

おそらく、テキストファイルに「,」で区切られたフィールドが少なくとも 2 つ含まれていない行があります。例えば:

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)
于 2013-07-17T13:42:44.813 に答える