我想用文本文件中的新值替换某些值。我有一个包含旧值(c)的列表和一个包含新值的列表(item1)。 我的代码是:
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个元素,所以我不知道为什么在“line = line.replace(c [x],iteml [x])”中出现了indexerror。
当我使用“print(c)”或“print(iteml)”时,我得到了整个列表......我的失败在哪里?
答案 0 :(得分:0)
C [] 可能长152个元素,但是当您在 alt 上迭代并在每次迭代中将 x 递增1时,它是你的循环可能超过152次迭代,因为它取决于alt的长度。
一种可能的解决方案是在循环结束时添加if语句:
if (x == 152):
break
因此,只要你的循环达到迭代次数152,就会完成它的执行,你就不会有任何IndexError。
答案 1 :(得分:0)
此问题是因为每个项目中的项目数量不一定相等,因此您不应对152
之类的数字进行硬编码。
您之前发布了相同的代码。