不了解此“索引超出范围”错误的原因

问题描述 投票:-2回答:2

我知道这是一个简单的问题,但我似乎无法弄清楚为什么它会给我这个错误。

import datetime,openpyxl,re
wb = openpyxl.load_workbook("..\\test.xlsx")
print(wb.sheetnames)
sh = wb["July"]
def values():
    for counter in range(0,104):
        results=[""]
        for row in sh["B3":"I16"]:
            #print("\n")
            for cell in row:
                b = cell.value
                #print(b)
                #if b == "None":
                #   break
                #else:
                result = re.sub("[0-9]+","", str(b))
                result = re.sub(r'[£]',"",result)
                results[counter] = result
                if(results[counter] == "Room"
                   or results[counter] == "None"
                   or results[counter] == "****"
                   or results[counter] == "Double Bed"):
                    None
                else:
                    print(results[counter])
                    #result1 = result
                    #print(result,result1)

我的错误是

Traceback (most recent call last):

File "C:\Users\***\Desktop\Automated Email\Test\Test.py", line 26, in <module>
    values()   File "C:\Users\***\Desktop\Automated Email\Test\Test.py", line 19, in values
    results[counter] = result

IndexError: list assignment index out of range

该程序的作用是从测试xlsx文件中提取一些数据并显示它们。在它们之后,我仅从文件中获得名称(而不是价格或符号),然后我将一些其他空单元格分开,然后将它们放入数组中,以便可以将其与以前的值进行比较,如果它们只是相同的打印一次。

python excel python-3.x
2个回答
0
投票

您正在尝试访问数组counter中的索引results,但是此地址尚不属于您的数组。您必须append您的值才能将其添加到数组中:

results.append(result) #adds the value `result` to your array at a new index
if results[counter] == "Room" or results[counter] == "None" or results[counter] == "****" or results[counter] == "Double Bed":
   None

0
投票

您的变量结果是一个列表(不是字典)。

您只能追加到列表中或将现有值替换为其索引。

执行上述代码时,未给出计数器索引。您可以使用

添加下一个索引
restults.append(result)

或者您可以更改

results=[]

to

results={}

哪个使它成为字典。这里的索引既不必是数字,也不必严格递增。

如果不需要计数器的显式int,请使用append方法。

© www.soinside.com 2019 - 2024. All rights reserved.