Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Вывести сообщение, что каждый элемент списка содержит вхождение регулярного выражения

#python #python_3x #регулярные_выражения


1. Кратко

См. заголовок.



2. Минимальный пример

Имеется список.

sashalist = ['Sasha1', 'Sasha14', 'Sasha4147']


Необходимо проверить, что каждый элемент списка содержит $вхождение, и если действительно
содержит, вывести сообщение.

Положим, $вхождение — цифра 1. Работающий пример:


Демо на Ideone


sashalist = ['Sasha1', 'Sasha14', 'Sasha4147']

if all('1' in item for item in sashalist):
    print('Все элементы списка содержат «1»!')



Вывод:


Все элементы списка содержат «1»!


Если же $вхождение — это регулярное выражение, (например, \d), то не найду, что я
должен сделать.



3. Попытки справиться с проблемой самостоятельно

3.1. Аналогия


Демо на Ideone


import re


sashalist = ['Sasha1', 'Sasha14', 'Sasha4147']
sasharegex = r'\d'

if all(re.search(sasharegex, sashalist) in item for item in sashalist):
    print('Все элементы списка содержат цифру!')



Получаю traceback:


Traceback (most recent call last):
  File "./prog.py", line 7, in 
  File "./prog.py", line 7, in 
  File "/usr/lib/python3.5/re.py", line 173, in search
    return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object


3.2. Цикл


Демо на Ideone


import re


sashalist = ['Sasha1', 'Sasha14', 'Sasha4147']
sasharegex = r'\d'

for item in sashalist:
    sasharegexsearch = re.search(sasharegex, item)
    if sasharegexsearch:
        print("Все пункты списка содержат цифру!")



Сообщение выводится после проверки каждого элемента:


Все пункты списка содержат цифру!
Все пункты списка содержат цифру!
Все пункты списка содержат цифру!


А нужно, чтобы вывелось одно сообщение после успешной проверки всего списка.
    


Ответы

Ответ 1



https://ideone.com/msQnop import re sashalist = ['Sasha1', 'Sasha14', 'Sasha4147'] sasharegex = r'Sas' if all(re.search(sasharegex, item) for item in sashalist): print('All elements have sasharegex !')

Комментариев нет:

Отправить комментарий