неподдерживаемые типы операндов для +: '_regex.Pattern' и 'str' - PullRequest
0 голосов
/ 20 июня 2019

Я получаю следующий URL при попытке сопоставить URL с регулярным выражением. Как мне решить эту ошибку. Я пытаюсь извлечь текст из href с помощью регулярных выражений и добавить его к исходному URL. Что-то вроде перенаправления. Я не могу опубликовать URL, поскольку он не авторизован.

Пример URL-адреса abc.com

Я анализирую вышеуказанный URL, чтобы извлечь href-текст из выпадающего меню, скажем, текст <li><a href="ABC.asp?DER=PI">Myshop</a></li> Я извлекаю данные изнутри href и делаю URL-адрес как abc.com/ABC.asp?DER=PI

Я получаю следующий URL при попытке сопоставить URL с регулярным выражением и объединить его со строкой URL. Как мне решить эту ошибку

a=(re.compile('href=(.+Home\.asp\?Pipe=.+)\"'))

Я получаю следующую ошибку.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-189-01866482c481> in <module>
     10 for item in data1:
     11     a=(re.compile('href=(.+Home\.asp\?Pipe=.+)\"'))
---> 12     print(a + url)
     13 #print(data2)
     14 #for item in data

TypeError: unsupported operand type(s) for +: '_regex.Pattern' and 'str'

Ответы [ 3 ]

1 голос
/ 20 июня 2019

re.compile компилирует шаблон регулярного выражения в объект регулярного выражения, который можно использовать для сопоставления, используя только его методы match () и search ().

Вы не можете добавить объект регулярного выражения со строкой.

Пожалуйста, прочитайте https://docs.python.org/3.7/library/re.html для получения дополнительной информации.

Надеюсь, это поможет

0 голосов
/ 21 июня 2019

@ akshay re.compile (pattern) => возвращает объект re, и вы пытаетесь выполнить операцию конкатенации со строкой (т. Е. Url - неясно, поскольку полный фрагмент кода не предоставлен), что недопустимо.Пожалуйста, предоставьте полный фрагмент кода и его назначение, чтобы я мог лучше понять его.Спасибо

0 голосов
/ 21 июня 2019

Если все, что вы хотите сделать, это извлечь href:

import re
txt = '<li><a href="ABC.asp?DER=PI">Myshop</a></li>'
url = 'abc.com'
find_href = re.compile(r'href="(.+)"')
href = find_href.search(txt)
if href:
    print(f"{url}/{href.group(1)}")

Вывод:

abc.com/ABC.asp?DER=PI
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...