我有一张关于excel的表格,我想检查一些元素是否为空,用于错误分类或者是否有问题。
所以,我想检查放在[1]的所有元素。
import csv
matrix = csv.reader(open("matrix1.csv","rb"))
arr = range(50)
x = 0
for row in matrix:
arr[x] = row
x += 1
i = 0
len = len(arr)
for i in range(len):
if ((arr[i][1]) is None):
print("it is empty")
TypeError:'int'对象不可订阅
但是,如果我的代码类似于下面的代码,它可以正常工作,但我的控制台仍然说:
TypeError:'int'对象不可订阅
for i in range(len):
if ((arr[i]) != 0):
print(arr[i][1])
完整控制台输出:
585957 Traceback(最近一次调用最后一次): 545253 515359 575951 文件“C:/PycharmProjects/test.py”,第17行,in 525356 打印(ARR [I] [1]) 565958 585754 TypeError:'int'对象不可订阅 505152 535250
这意味着,它给了我想要的元素,但它仍然不酷。
我错过了什么?谢谢!
答案 0 :(得分:2)
arr
是一个单维数组,或只是一个列表,其中包含从0
到49
的数字。 arr[i][1]
正试图访问1
i+1
arr
列表中的第二项(i+1
),该项目不存在,因为arr
项i
的数字是一个数字,而不是一个列表(它是数字<WAS_INSTALL_DIR>/bin/> wsadmin -conntype NONE
wsadmin> securityoff
wsadmin> exit
)。
答案 1 :(得分:2)
您似乎正在尝试使用arr = range(50)
实例化固定长度列表。对于大多数Python应用程序,您不需要关心这一点;列表可以动态增长,内存将根据需要进行分配。相反,只需创建一个空列表并附加到它。
arr = []
for row in matrix:
arr.append(row)
我认为您的错误来自于您可能没有用矩阵的行替换range(50)
中的所有元素,留下整数值。这些会导致您看到的错误(49[1]
无效,因为您尝试索引整数)。