для l oop вызывает печать нежелательных элементов, как написать оператор if? - PullRequest
0 голосов
/ 03 мая 2020

в моем re_list у меня есть 4 условия, теперь, когда я перебираю строку, она выдает мне вывод, если необходимая информация существует, а если нет, то дает мне пустой список. если re.findall не находит совпадений: я хочу только 1 пустой список. Как мне избежать получения дополнительных 3 пустых списков? как должно быть условие if здесь?

проверить вывод и ожидаемый спад ниже

это весь код

fil = data['transcription']
re_list = [
    '\d*\-year-old',
    '\d*\ year old',
    '\d*\ years old',
    '\d*\ y/o'
]


matches = []

for i in fil:

    try:
#         i.replace('-',' ')

        for r in re_list:
            matches.append(re.findall(r,i))
        else:
            pass
#             matches+=(' ')
    except:
        pass
#         matches+=[]

    print((matches))

что-то вроде это не работает, и да, я знаю почему, как я могу написать оператор if с условием re.findall.

   for r in re_list:
       if r in i:
           matches.append(re.findall(r,i))

output:

[['23-year-old'], [], [], []]
[['23-year-old'], [], [], [], [], [], [], []]
[['23-year-old'], [], [], [], [], [], [], [], [], [], ['42 years old'], []]
[['23-year-old'], [], [], [], [], [], [], [], [], [], ['42 years old'], [], [], [], [], []]
[['23-year-old'], [], [], [], [], [], [], [], [], [], ['42 years old'], [], [], [], [], [], [], [], [], []]
[['23-year-old'], [], [], [], [], [], [], [], [], [], ['42 years old'], [], [], [], [], [], [], [], [], [], ['30-year-old'], [], [], []]

Ожидается:

[['23-year-old']]
[['23-year-old'], []]
[['23-year-old'], [], ['42 years old']]
[['23-year-old'], [], ['42 years old'], []]
[['23-year-old'], [], ['42 years old'], [], []]
[['23-year-old'], [], ['42 years old'], [], [], ['30-year-old']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...