我知道这是一个简单的问题,但是我似乎无法弄清楚为什么它会给我这个错误。
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
文件中提取一些数据并显示它们。在它们之后,我仅从文件中获得名称(而不是价格或符号),然后我将一些其他空单元格分开,然后将它们放入数组中,以便可以将其与以前的值进行比较,如果它们只是相同的打印一次。
答案 0 :(得分: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
答案 1 :(得分:0)
您的变量结果是一个列表(而不是字典)。
您只能将其追加到列表中,或将现有值替换为其索引。
执行上述代码时,不会给出计数器索引。您可以使用
添加下一个索引d1.values()
或者您可以更改
d3 = dict(zip(map(int, d1.values()), d2.values()))
print(d3)
>>> {1: 'Apple', 2: 'Banana', 3: 'Strawberry', 4: 'Kiwi'}
到
restults.append(result)
这使它成为字典。这里的索引既不必是数字,也不必严格递增。
如果您不需要计数器的显式int,请使用append方法。