Python 列表索引超出了while循环的范围
读取一列的n行后,表示列表索引超出范围。假设,我不知道行数,所以选择while循环。我可以在ExcelVBA中运行相同的程序,但这里有一些问题。 错误回溯Python 列表索引超出了while循环的范围,python,python-2.7,Python,Python 2.7,读取一列的n行后,表示列表索引超出范围。假设,我不知道行数,所以选择while循环。我可以在ExcelVBA中运行相同的程序,但这里有一些问题。 错误回溯 for file in files: book=xlrd.open_workbook(file) first_sheet = book.sheet_by_index(0) i=0 j=0 while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.
for file in files:
book=xlrd.open_workbook(file)
first_sheet = book.sheet_by_index(0)
i=0
j=0
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
val=first_sheet.cell(14+i,1+j)
print (val, i)
i=i+1
i=0
j=j+1
如果您知道您遇到的异常,并且只是想忽略它,请尝试:except:这是解决方法
Traceback (most recent call last):
File "C:\Users\User_2\Desktop\Vijay\FAST\KarBarge\Results py-spreadsheets.py", line 28, in <module>
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 399, in cell
self._cell_types[rowx][colx],
IndexError: list index out of range
您获取列表索引超出范围的原因是,正如您所说,您试图访问电子表格中不存在的单元格。简单地测试它是否为空会导致这种情况 xlrd可以通过以下方式告诉您可用行数和列数:
i=0
j=0
try:
while first_sheet.cell(14,1+j).value != xlrd.empty_cell.value:
try:
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
val=first_sheet.cell(14+i,1+j)
print (val, i)
i=i+1
except IndexError:
# ignore error from iterating in i
pass
except IndexError:
# ignore error from iterating in j
pass
else:
i=0
j=j+1
因此,您的循环需要保持在这些范围内
您的代码似乎试图按列显示电子表格的内容。作为替代方法,您可以尝试以下方法:
print(first_sheet.nrows, first_sheet.ncols)
这会将每一列打印为从第14行开始的值列表。发布完整错误回溯为什么在第一张工作表上有while。cell14+i,1+j.value!=xlrd.empty_cell.value:两次?@MisterMiyagi:我有一个nxn值。我会浏览每一个专栏,每一篇文章rows@kvorobiev:回溯最后一次调用:文件C:\Users\User\u 2\Desktop\Vijay\FAST\KarBarge\Results\py-spreadsheets.py,第28行,在while first\u sheet.cell14+i,1+j.value!=xlrd.empty_cell.value:文件C:\Python27\lib\site packages\xlrd\sheet.py,第399行,在cell self中。_cell_types[rowx][colx],indexer:列表索引超出范围请按我写的方式找出错误。因为我可以用同样的基本方法成功地在excel vba中编写。?
import xlrd
workbook = xlrd.open_workbook(r"input.xlsx")
sheet = workbook.sheet_by_index(0)
for colx in range(1, sheet.ncols):
print(sheet.col_values(colx, start_rowx=14))