2017-02-18 47 views
1

我需要从一个文件中的每一行,并作出字典出他们的 这里是我的代码:的Python代码工作,但也表示“索引超出范围”

def recnik(line): 
    knjiga1 = {} 
    info = line.split("|") 
    knjiga1["autori"] = info[0] 
    knjiga1["naslov"] = info[1] 
    knjiga1["godina"] = info[2] 
    knjiga1["isbn"] = info[3] 
    knjiga1["zanr"] = info[4] 
    knjiga1["cena"] = info[5] 
    knjiga1["kolicina"] = info[6] 
    knjiga1["stanje"] = info[7] 

    print(knjiga1) 

a = open("../data/sveKnjige.txt", "r") 
for line in a: 
    recnik(line) 
a.close() 

和我的文件看起来像这样:

Viliam Sekspir|Hamlet|1600|3214569879878|drama|6500|60|true| 
Dragoslav Mihajlovic|Kad su cvetale tikve|1968|3332221115554|drama|3000|20|true| 
Fjodor Dostojevski|Zlocin i kazna|1866|9788897572657|roman|4500|50|true| 
Dostojevski|Ana|1995|3214569874563|triler|321|22|true| 

此代码的作品,但也带来了这个错误'列表索引超出范围'我找不到问题。请帮忙。

回答

0

此代码适用于我的机器。你确定你的输入文件实际上是你在这里发布的吗?

+0

是的,它打印所有词典也是这样: 回溯(最近通话最后一个): 文件 “C:\用户\联想\桌面\ OP_SII_270486的\ src \ asd.py” 17行,在 recnik (行) 文件“C:\ Users \ lenovo \ Desktop \ OP_SII_270486 \ src \ asd.py”,第5行,在recnik knjiga1 [“naslov”] = info [1] IndexError:列表索引超出范围 –

0

也为我工作。 我试图挑起错误,我不得不添加最后一行“|”到输入文件字符以使其失败。

也许你有一些不正确的字符(在输入文件中)。尝试在每个循环中打印信息的内容。