Как искать с помощью обратной косой черты - PullRequest
2 голосов
/ 28 июня 2019

Я работаю, чтобы просматривать сайты, чтобы найти конкретные слова. Я использую re.compile с bs4 для поиска слова. У меня возникают проблемы, если мое слово содержит обратную косую черту ('\'). Я надеялся, что смогу получить некоторую помощь о том, как это сделать. Мой код обычно такой

results = self.soup.find_all(string=re.compile('.*{0}.*'.format(searched_word), re.IGNORECASE), recursive=True)

Этот код выдает ошибку re.error: bad escape \M at position 13, когда я пытаюсь получить searched_word = Software\Microsoft\Windows\CurrentVersion\Run

Я где-то читал, что для того, чтобы избежать обратной косой черты, я должен сделать ее Software\\Microsoft\\Windows\\CurrentVersion\\Run, которая выдает ошибку. Или Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run, который не выдает ошибку, но не возвращает текст.

1 Ответ

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

Кажется, вы не экранируете строку для re.compile().Для этого используйте re.escape() ( doc ):

results = self.soup.find_all(string=re.compile('.*{0}.*'.format(re.escape(searched_word)), re.IGNORECASE), recursive=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...