Если вам не нужно переключаться между значениями i, то вы можете просто создать генератор, который будет возвращать вам значения i
одно за другим. Я обернул вызов следующего значения i
в блок try, поскольку, когда вы исчерпали значения, код не будет знать, что делать. поэтому мы ломаем l oop
i_list = (i for i in [5,3,1,1])
i = 2
for _ in range(10):
print(i)
try:
i += next(i_list)
except StopIteration as si:
print("no more values in i so loop terminating")
break
ВЫХОД
2
7
10
11
12
no more values in i so loop terminating
Однако, если вы хотите циклически перебрасывать значения i, вы можете использовать цикл из itertools модуль и безоговорочно возьмите следующий элемент из i_list столько, сколько вам нужно
from itertools import cycle
i_list = cycle([5,3,1,1])
i = 2
for _ in range(10):
print(i)
i += next(i_list)
ВЫХОД
2
7
10
11
12
17
20
21
22
27
ОБНОВЛЕНИЕ ВАШЕГО КОДА
ниже - обновление вашего кода, основанное на том факте, что вы сказали, что вам не нужно циклически повторяться. Помните, что как только вы достигнете конца i_list, ваш код не сможет увеличить i, поскольку в i_list больше нет значений.
i_list = [5,3,1,1]
i_generator = (i for i in i_list)
def search(file, excel_file):
i = 2
found_keywords = list()
wb = load_workbook(excel_file)
sheets = wb.sheetnames
sheet1 = wb[sheets[0]]
for kwrd in keywords:
for line in file:
if kwrd in line and kwrd not in found_keywords:
found_keywords.append(kwrd)
sheet1.cell(row=3, column=i).value = int(re.search(r"\d+", line).group())
i += next(i_generator)
elif kwrd in line:
continue
wb.save(excel_file)