У меня есть массив строк, который мне нужно перебрать, вставить каждую строку в регулярное выражение, а затем сохранить ее вывод в другом массиве. Я могу заставить регулярное выражение работать нормально, если я ввожу 1 строку за раз вручную, но не могу заставить ее циклически проходить по каждой строке.
Вот что у меня есть:
results = []
arr = ["CAT", "DOG", "BIRD"]
for i in arr:
patt='(i)+'
string= contents
p=re.compile(patt)
replen=[sp.end()-sp.start() for sp in p.finditer(string)]
results.append(max(replen)/(len(patt)-3))
string = contents - у меня есть текстовый файл, содержащий строку, с которой я выполняю регулярное выражение. Это сохраняется в содержании. Если я печатаю (строку), она правильно выводит строку txt файла
Я пытаюсь сделать так, чтобы программа посмотрела на строку, сохраненную в содержимом, а затем увидела, сколько раз "CAT "найден последовательно (например, ABCATCATCATDEFHGICAT = 3). Я хочу сохранить это число в результатах, затем сделать то же самое снова с DOG и BIRD и так далее.
Если я потеряю цикл for и вручную введу CAT или DOG или что-то еще в patt='(i)+'
, все работает нормально, но мне нужно, чтобы он перебирал каждую запись в массиве.
Минимальный воспроизводимый ответ:
results = []
arr = ["CAT", "DOG", "BIRD"]
patt='(CAT)+'
string= "ABCATCATCATCATDEFIJKCAT"
p=re.compile(patt)
replen=[sp.end()-sp.start() for sp in p.finditer(string)]
results.append(max(replen)/(len(patt)-3))
Вышеприведенное должно вставить 4 в массив результатов.