Python:不确定我为什么会得到" IndexError:列表赋值索引超出范围"错误

时间:2017-08-09 15:20:13

标签: python

我认为发布我的代码的略微修改版本会更容易(出于隐私原因而修改)。基本上我是基于csv文件中给出的信息创建目录结构。代码从将csv转换为2d列表开始。然后脚本搜索csv以查找相关信息,并逐行创建目录路径。要检查目录路径以查看它是否已存在,如果它不存在则应该创建它。唯一的问题是我用于pi和poc的循环给我一个错误" IndexError:列表赋值索引超出范围"而且我不确定为什么。

    #We need to find what column in the 2D list these fields are listed in the header
    x,y = index_containing_substring(data,"PiID")
    pi = []
    if x != None and y != None:
        for i in range(len(data)):
            pi[i] = data[i][y]
        #removes header row 
        pi.pop(0)
    else:
        pi = None
        print(' ')
        print("No value for PI")


    x,y = index_containing_substring(data,"RequesterID")
    poc = []
    if x != None and y != None:
        for i in range(len(data)):
            poc[i] = data[i][y]
        #removes header row 
        poc.pop(0)
    else:
        poc = None
        print(' ')
        print("No value for point of contact")

2 个答案:

答案 0 :(得分:2)

例如,在这里:

pi = []
if x != None and y != None:
    for i in range(len(data)):
        pi[i] = data[i][y]

您无法分配pi

中不存在的元素

解决此问题的一种方法是改为使用list.append()

pi = []
if x != None and y != None:
    for i in range(len(data)):
        pi.append(data[i][y])

相同的模式出现在代码中的其他几个位置。

答案 1 :(得分:0)

看起来这一行导致了问题

pi[i] = data[i][y]

而不是使用

pi.append(data[i][y])

有关详细信息,请参阅以下链接

https://docs.python.org/2/tutorial/datastructures.html