Регулярные выражения: поиск в списке в python3 - PullRequest
0 голосов
/ 01 марта 2019

У меня есть список строк.

Рассмотрим код ниже:

import re
mylist = ["http://abc/12345?abc", "https://abc/abc/2516423120?$abc$"]
r = re.compile("(\d{3,})")

result0 = list(filter(r.findall, mylist))  # Note 1
print(result0)

result1 = r.findall(mylist[0])
result2 = r.findall(mylist[1])
print(result1, result2)

Результаты:

['http://abc/12345?abc', 'https://abc/abc/2516423120?$abc$']

['12345'] ['2516423120']

Почему существует разница врезультаты мы получаем?

Фрагмент кода

1 Ответ

0 голосов
/ 01 марта 2019

Я не уверен, что вы ожидали от filter, но здесь он возвращает итератор для всех элементов x из mylist, для которых bool(r.findall(x)) равно False.Это только в том случае, если r.findall(x) возвращает пустой список, то есть регулярное выражение не соответствует строке, поэтому здесь result0 содержит те же значения, что и mylist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...