#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, inFile "./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 !')
Комментариев нет:
Отправить комментарий