Выбор из списка значений по регулярному выражению
Есть список в Python a = ['data1', 'asdf', 'data2', 'fghh', 'jhgf', 'data3']как одним выражением получить из него другой список, который будет содержать всё элементы первого, начинающиеся с 'data'? Как получить список всех элементов списка а, содержащих в названии числа?
Ответы (1 шт):
Через регулярные выражения можно реализовать следующим образом:
Как одним выражением получить из него другой список, который будет содержать всё элементы первого, начинающиеся с 'data'
import re
a = ['data1', 'asdf', 'data2', 'fghh', 'jhgf', 'data3']
b = [x for x in a if re.match(r'data.*', x)]
print(b) # ['data1', 'data2', 'data3']
Как получить список всех элементов списка а, содержащих в названии числа?
a = ['data1', 'asdf', 'data2', 'fghh', 'jhgf', 'data3', 'some1']
b = [x for x in a if re.match(r'.*\d.*', x)]
print(b) # ['data1', 'data2', 'data3', 'some1']
Дополнительно
Я считаю, что более удобно реализовать эту фильтрацию будет через list comprehenshion, для данных задач он чуть более удобно применяется за счет встроенных в Python функций startswith() и isdigit(). Вот как можно реализовать тот же самый функционал:
Поиск элементов, начинающихся с data:
b = [x for x in a if x.startswith('data')]
Поиск элементов, содержащих цифры:
b = [x for x in a if any(map(str.isdigit, x))]