【问题标题】:IndexError: list index out of range ,I do not use out list indexIndexError: list index out of range ,我不使用 out list index
【发布时间】:2017-09-08 01:36:23
【问题描述】:

我想解析 excel 并将数据放入模型(用户)中。我在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)

Excel 是

在这种情况下,domitory 是空的。我运行这段代码,所以发生了错误

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]

我不明白为什么会发生这个错误,因为我没有写代码被访问到索引列表之外。但是我该如何解决这个问题?我应该写什么?

我通过查看答案编写了代码,但是发生了一些错误,例如

【问题讨论】:

  • 您可以尝试捕获该异常并写入 0 或 N/A 而不是打破pythonforbeginners.com/error-handling/…
  • 我无法理解你的 cmets。如果我在我的代码中编写你的 cmets,我应该写什么?

标签: python django excel


【解决方案1】:

在尝试获取其值之前,请尝试检查单元格是否为空白或空。我从来没有使用过 xlrd,所以我不知道这是否是问题所在:

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}

【讨论】:

  • 谢谢你的回答。我写了你的代码,但发生了一些错误。我更新了我的问题,如果你知道什么请帮助我。
  • 我想在空单元格中嵌入null,如果单元格为空,你是否打算编写代码,跳过行?
  • 您遇到了什么错误?我看到您的 IDE 下划线了一些单词,但这些不是错误。目的是检查单元格是否为空或空白:如果是,则返回key:None。如果没有,请返回key:cell_value(x,y)。最终由您决定要对空/空白单元格做什么。
  • 据说未解决的参考 'key' & 'rowy' & 'colx',并且声明预期在 None 中说,而冒号预期在最后 } 中说。我想将 null 或 None 放在空单元格中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2015-02-11
  • 2013-04-27
  • 2018-02-08
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多