Найдите определенный шаблон (регулярное выражение) в каждом элементе списка строк (Python)

#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) метод.