return
приводит к немедленному завершению текущей функции *, поэтому ваши циклы for достигнут только первой итерации. Если вы хотите выполнить итерацию до конца, вы можете накапливать свои значения в списке и возвращать этот список в конце:
def get_codes(containers, pattern):
results = []
for container in containers:
tweet_bodies = str(container.find('p'))
shift_codes = re.findall(pattern, tweet_bodies)
for shift_code in shift_codes:
results.append(str(shift_code))
return results
... Или превратить вашу функцию в генератор, заменяя каждыйreturn
с yield
.
def get_codes(containers, pattern):
for container in containers:
tweet_bodies = str(container.find('p'))
shift_codes = re.findall(pattern, tweet_bodies)
for shift_code in shift_codes:
yield str(shift_code)
(* если вы не находитесь внутри блока with
или try
с блоком finally
, и в этом случае перед завершением может произойти некоторая очистка)