Значение IndexError
повышается, потому что вы увеличиваете count
на каждой итерации цикла, но не добавили верхний предел на основе того, сколько значений содержит список pllines
. Вы должны выйти из цикла, когда он достигнет len(pllines)
, чтобы избежать ошибки.
Другая проблема, которую вы, возможно, не заметили, связана с использованием метода re.sub()
. Он возвращает новую строку с соответствующими заменами и не изменяет оригинал.
Если шаблон не существует в строке, он вернет сам оригинал. Таким образом, ваш список nTemplate
, вероятно, никогда не содержал никаких замененных строк. Если вам не нужно выполнять какие-либо другие действия, если шаблон был найден в строке, вы можете покончить с условием if
(как я сделал в примере ниже).
Поскольку объект priceValue
одинаков для всех строк, его можно переместить за пределы цикла.
Следующий код должен работать:
nTemplate = [" "]
output = open(r'C:\Users\Sammy\Downloads\output.txt','rw+')
count = 0
priceValue = re.compile(r'107.5')
for line in templateImport:
if count == len(pllines):
break
nTemplate.append(priceValue.sub(pllines[count], line))
count = count + 1
print(nTemplate)