Вы можете сделать это в одной строке:
results += re.findall(pattern, extracted_string) or ["Error"]
Кстати, вы не получаете никакой выгоды от компиляции шаблона в цикле вендора, потому что вы используете его только один раз.
Ваша функция также может вернуть весь результат поиска, используя единый список:
return [m for v in vendor for m in re.findall(v, extracted_string) or ["Error"]]
Немного странно, что вы на самом деле хотите изменить И вернуть список результатов, переданный в качестве параметра. Это может привести к неожиданным побочным эффектам при использовании функции.
Ваш флаг «Ошибка» может появляться несколько раз в списке результатов, и, учитывая, что каждый шаблон может возвращать несколько совпадений, будет трудно определить, какой шаблон не смог найти значение.
Если вы хотите сообщить об ошибке только в том случае, если ни один из шаблонов поставщиков не соответствует, вы можете использовать трюк or ["Error"]
для всего результата:
return [m for v in vendor for m in re.findall(v, extracted_string)] or ["Error"]