2017-09-08 5 views
0

私は解析し、モデル(ユーザー)にデータを入れたいと思います。私は、Excelは、この場合、 excelIndexError:リストのインデックスが範囲外です。リストのインデックスを使用していません。

ある

views.py

import xlrd 

book = xlrd.open_workbook('excel1.xlsx') 
sheet = book.sheet_by_index(0) 

cells = [ 
    ('user_id', 0, 5), 
    ('name', 3, 1), 
    ('nationality', 3, 2), 
    ('domitory', 3, 3), 
    ('group', 3, 4)] 

user1 = {key:sheet.cell_value(rowy, colx) for key, rowy, colx in cells} 

print(user1) 
に書いた、ドミトリーはempty.Iこのコードを実行されるので、エラーがなぜこのエラー私は理解できない

IndexError: list index out of range 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/Users/XXX/testapp/app/views.py", line 112, in <module> 
    user1 = {key:sheet3.cell_value(rowy, colx) for key, rowy, colx in cells} 
    File "/Users/XXX/testapp/app/views.py", line 112, in <dictcomp> 
    user1 = {key:sheet3.cell_value(rowy, colx) for key, rowy, colx in cells} 
    File "/Users/XXX/myenv/lib/python3.5/site-packages/xlrd/sheet.py", line 415, in cell_value 
    return self._cell_values[rowx][colx] 

起こります私はコードがインデックスリストの外にアクセスされた書き込みをしなかったために発生します。しかし、これを修正するにはどうすればよいですか?

私は答えを見て、コードを書きましたが、多少の誤差は enter image description here

+0

あなたは、その例外をキャッチし、0を書き込むか、N/Aの代わりに、http://www.pythonforbeginners.com/errorを壊す試みることができる:私は、それが問題だ場合、私は見当がつかないので、xlrd使ったことがありません-handling/exception-in-python – iffy

+0

私はurのコメントを理解できません。私のコードにurのコメントを書くと、どうすればいいですか? – user8504021

答えて

0

セルはそれが価値だ取得しようとする前に空白または空であるかどうかをチェックしてみように起こります。

user1 = {key:sheet.cell_value(rowy, colx) if sheet.cell_type(rowy, colx) not in (xlrd.XL_CELL_EMPTY, xlrd.XL_CELL_BLANK) else key:None for key, rowy, colx in cells} 
+0

thx ur答え。私はurコードを書いたが、何かエラーが起こる。私が何かを助けてくれたら、私の質問を更新した。 – user8504021

+0

空のセルにヌルを埋め込みたいのですが、セルが空で行がスキップされたらコードを書くつもりですか? – user8504021

+0

どのようなエラーが発生しましたか?あなたのIDEがいくつかの言葉に下線を引いているのが見えますが、それらはエラーではありません。セルが空であるかブランクであるかをチェックすることです:もしそうなら 'key:None'を返します。そうでなければ、 'key:cell_value(x、y)'を返します。最終的には、空白の空白セルで何をしたいかを決めるのはあなた次第です。 –

関連する問題