Проблема с регулярными выражениями в python. Невозможно распечатать требуемое содержимое после очистки - PullRequest
0 голосов
/ 11 мая 2018
html = urlopen("http://pythonscraping.com/pages/page3.html")
soup = BeautifulSoup(html,'lxml')
images = soup.findAll("img", 
{"src":re.compile("\.\.\/img\/gifts\/img.*\.jpg") })

for image in images:
    x=(image['src'])
    print(x)

    mage = re.findall("^\.\. (\/img\/gifts\/img.*\.jpg)",x)
    print(mage)

=============================================== =======================

В приведенном выше коде вывод ../img/gifts/img1.jpg [] ../img/gifts/img2.jpg [] ../img/gifts/img3.jpg [] ../img/gifts/img4.jpg [] ../img/gifts/img6.jpg []

однако я поместил фразу print (mage) и код, чтобы избавиться от первых двух точек в выводе print (x)

Может кто-нибудь помочь мне с этой проблемой? Почему я получаю пустой []. Пожалуйста, помогите мне с кодом, если есть ошибки

Я использую Pycharm для запуска этого кода

1 Ответ

0 голосов
/ 11 мая 2018

С re.findAll

Строка сканируется слева направо, и совпадения возвращаются в указанном порядке. Если в шаблоне присутствует одна или несколько групп, вернуть список групп

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

mage = re.findall("^\.\. (?:\/img\/gifts\/img.*\.jpg)",x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...