2016-08-26 22 views
-2

私のコードの関連部分を以下に掲載しました。その前には、私は間違いがないと確信しているロード関数だけです。Pythonのヘルプ、txtファイルの読み込みと書き込み

私はエラー

IndexError: list index out of range("namestaj["Naziv"] = deon[1]") 

誰が故障して何かを見るんが供給のですか?物事の

#load furniture from a txt file 
def ucitajNamestaj(): 
    listaNamestaja = open("namestaj.txt", "r").readlines() 
    namestaj = [] 
    for red in listaNamestaja: 
     namestaj.append(stringToNamestaj(red)) 
    return namestaj 

#String to Furniture, dictionary 
def stringToNamestaj(red): 
    namestaj = {} 
    deon = red.strip().split("|") 
    namestaj["Sifra"] = deon[0] 
    namestaj["Naziv"] = deon[1] 
    namestaj["Boja"] = deon[2] 
    namestaj["Kolicina"] = int(deon[3]) 
    namestaj["Cena"] = float(deon[4]) 
    namestaj["Kategorija"] = deon[5] 
    namestaj["Dostupan"] = deon[6] 
    return namestaj 
+1

はあなたのコードをフォーマットしてください、非常に読みにくいし、任意のインデントを見つけることは不可能ですエラー。あなたの行 'deon = red.strip()。split(" | ")'はおそらく複数の要素を生成していません。チェックするためにこの文の後に 'deon'の値を表示してください。データファイルなしではこれを再現することはできません。 – cdarke

答えて

0

カップルまず、そうでない場合は、あなたの質問が読めない、mcveを提供するために、常に試してみて、あなたが適切SOコード指令を使用してください。

今は、おそらく何が起こっているのは、あなたのファイルは、いくつかの空行を持っており、あなたがそれらをスキップしていないで、これを試してみてください。

def ucitajNamestaj(): 
    listaNamestaja = open("namestaj.txt", "r").readlines() 
    namestaj = [] 
    for red in listaNamestaja: 
     if red.strip() == "": 
      continue 
     namestaj.append(stringToNamestaj(red)) 
    return namestaj 

def stringToNamestaj(red): 
    namestaj = {} 
    deon = red.strip().split("|") 
    namestaj["Sifra"] = deon[0] 
    namestaj["Naziv"] = deon[1] 
    namestaj["Boja"] = deon[2] 
    namestaj["Kolicina"] = int(deon[3]) 
    namestaj["Cena"] = float(deon[4]) 
    namestaj["Kategorija"] = deon[5] 
    namestaj["Dostupan"] = deon[6] 
    return namestaj 
+0

ありがとうございました!イェ・マインは私がそれをもっと早く見なかった方法を驚かせた –

関連する問題