#python #list #expression
#python #Список #выражение
Вопрос:
Из этого списка problems= ["32 698", "3801 - 2", "45 43", "123 49"]
Я хочу получить эти числа "d*s"
, которые означают 32,3801,45,123
Есть ли способ заглянуть в каждый элемент списка и выполнить поиск там с пониманием списка?
У меня есть только эта попытка print([x for x in problems if re.search(r'd*s',x)])
, но она печатает весь элемент, если "d*s"
он есть, поэтому я снова получаю ["32 698", "3801 - 2", "45 43", "123 49"]
(Моя цель — иметь длину большего числа каждого элемента, которая будет равна 3,4,2,3)
Ответ №1:
Вам нужно извлечь первую часть перед пробелом в ваших строках. Это можно сделать с помощью группового захвата. Вот код, который вы можете использовать:
[re.search('(d )s', x).group(1) for x in problems if re.search(r'(d)*s',x)]
Здесь (d )s
совпадения для одной или нескольких цифр перед символом пробела, и мы извлекаем первую группу, используя group(1)
метод.