我遇到一个问题,我有一个从csv文件创建的相当大的嵌套列表(56k嵌套列表)。每个嵌套列表包含4个字符串。我试图找到嵌套列表,其中包含特定位置的特定字符串。
我一直收到一个IndexError,虽然我注意到如果我删除了最后一个嵌套列表,错误就会消失。
有人可以解释原因吗?
下面的代码和附加的jpg来说明
感谢您的帮助。
import csv
with open('c:\\users\\user\\desktop\\MeshTreeHierarchy.csv', 'rb') as f:
reader = csv.reader((x.replace('\0', '') for x in f), delimiter='\t')
# the line above addresses problem of null bytes in the csv file
main_list = list(reader)
# IndexError is not thrown if the del line below is made active
# del main_list[-1:]
chosen_list = [x for x in main_list if 'Hallux' in x[2]]
答案 0 :(得分:0)
可能会抛出此错误,因为列表中的最后一个元素少于三个条目。
在这种情况下,[x for x in main_list if 'Hallux' in x[2]]
将失败,因为x[2]
不存在。
您可以尝试这样的解决方法:
[x for x in main_list if 'Hallux' in (x[2] if len(x)>2 else [])]
但删除最后一行也是正确的,因为它似乎不属于其余数据