我创建了一个代码,通过Python中的两个目录中的.xlrd导入数据。
$ python ptest.py
$ python -i ptest.py
Traceback (most recent call last):
File "ptest.py", line 3, in <module>
sys.exit(0)
SystemExit: 0
当我打开两个目录(类别或术语)中的一个时,它会显示一个值列表。
打印(类别[I]) 到目前为止,非常好。
但是,当我尝试打开个别值时
打印(类别[ “2”]) ,它会一直给我一个错误&gt;&gt;
import xlrd
#category.clear()
#term.clear()
book = xlrd.open_workbook("C:\Users\Koen\Google Drive\etc...etc..")
sheet = book.sheet_by_index(0)
num_rows = sheet.nrows
for i in range(1,num_rows,1):
category = {i:( sheet.cell_value(i, 0))}
term = {i:( sheet.cell_value(i, 1))}
密钥确实已编号(由i确定)。 我已经尝试过[] {}“”“等等。没有任何作用。
由于我稍后在代码中需要这些值,我想知道键错误的原因是什么。
先谢谢你一起来看看!
答案 0 :(得分:0)
首先,你在for循环的每次迭代中重新分配类别和术语,这样字典在每次迭代时总会有一个键,最后一个索引结束,所以如果我们的表有100行,那么dict将只有密钥99
。要解决这个问题,您需要在循环外定义字典并在循环内分配键,如下所示:
category = {}
term = {}
for i in range(1, num_rows, 1):
category[i] = (sheet.cell_value(i, 0))
term[i] = (sheet.cell_value(i, 1))
第二,使用for i in range(1, num_rows, 1):
定义密钥的方式,它们是整数,因此您必须访问字典密钥,如category[1]
。要使用字符串键,您需要使用category[str(i)]
进行转换。
我希望澄清这个问题。