为什么会出现“IndexError:list index out of range”错误?

2024-10-06 16:27:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用文本文件中的新值替换一些值。我有一个旧值列表(c)和一个新值列表(iteml)。 我的代码是:

def write_file(self):

   iteml=[]
   for row in range(152):
             item=self.model.item(row,1)
             item.text()
             text=str(item.text())
             iteml.append(text)



   alt=open("file","r")
   neu=open("newfile","w")

   x=0
   for line in alt:
      if line[0] == "|":
           neu.write(line)
      if line[0] != "|":
           line=line.replace(c[x],iteml[x])
           x=x+1
           neu.write(line)

c[]被定义为全局的,有152个元素长,所以我不知道为什么在“行”=线路.更换(c[x],iteml[x])”索引器出现。你知道吗

当我使用“print(c)”或“print(iteml)”时,我得到了整个列表。。。我的失败在哪里?你知道吗


Tags: textinself列表forlineopenalt
2条回答

这个问题是因为每个项目中的项目数不一定相等,所以不应该像152那样硬编码一个数字。你知道吗

你之前发布过同样的代码。你知道吗

试着从那个问题中找出我的答案:https://stackoverflow.com/questions/20217097/how-to-ignore-following-characters-in-a-line/20217594#20217594

C[]可能有152个元素长,但是当您在alt上迭代并且在每次迭代中以1递增x时,您的循环可能会进行超过152次迭代,因为这取决于alt的长度

一个可能的解决方案是在循环末尾添加and if语句:

if (x == 152):
     break

因此,每当循环达到iteration num 152时,它将完成其执行,并且您将没有任何索引器。你知道吗

相关问题 更多 >