#python #regex #web-scraping
Вопрос:
Я пытался удалить ссылку из файла .eml, но каким-то образом я всегда получаю
Ответ №1:
ДА. Ты прав. Просто удалите пробелы и новые строки из необработанного текста. Например:
link = re.findall("CONFIRM<([^s] )>", raw_email.replace('n', '').replace(' ', ''))
Ответ №2:
По сути, вы хотите получить все, что находится между CONFIRM<
и >
.
- Удалите пробелы в необработанном URL-адресе, заменив их пустыми строками.
(.*?)
будет захватывать все междуCONFIRM<
и>
- Используется
.group(1)
для получения фактической захваченной строки
import re
def get_url(raw):
raw = raw.replace(' ', '')
url = re.search('CONFIRM<(.*?)>', raw).group(1)
return url
Для приведенного тестового примера.
raw_url = 'Please click "CONFIRM" below. CONFIRM<https://app.rule.io/subscriber/optIn?token=3DeyJ0eXAiOiJKV1QiLCJhbG= ciOiJIUzI1NiJ9.eyJzdWIiOjEssswrgTA3OCwic3Vic2NyaWJlckZvcm0iOjExOTAsImlzcyI6= Imh0dHBzOi8vYawetgg1bGUuaW8iLCJpYXQiOjE2MjM1NzkwMDYsImV4cCI6MTYyNDE4MzgwNiw= ibmJmIjoxNjIzNTc5MDA2LCJqdGkiOiJEbHMyeDJmcG5pZEhTWXVjwjwje-52uhXlj9efaEwzfI= Rruoiqc3RvUTZ8LgB6ALEAoL4>'
print(get_url(raw_url))
Выведет
https://app.rule.io/subscriber/optIn?token=3DeyJ0eXAiOiJKV1QiLCJhbG=ciOiJIUzI1NiJ9.eyJzdWIiOjEssswrgTA3OCwic3Vic2NyaWJlckZvcm0iOjExOTAsImlzcyI6=Imh0dHBzOi8vYawetgg1bGUuaW8iLCJpYXQiOjE2MjM1NzkwMDYsImV4cCI6MTYyNDE4MzgwNiw=ibmJmIjoxNjIzNTc5MDA2LCJqdGkiOiJEbHMyeDJmcG5pZEhTWXVjwjwje-52uhXlj9efaEwzfI=Rruoiqc3RvUTZ8LgB6ALEAoL4