Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Извлечение части строки из строки Python

Владимир Патенко Ученик (225), на голосовании 2 месяца назад
В результате выполнения некоторой программы на python 3.12, переменная body получает строку-значение кода веб-страницы письма мэйл. Среди этой.строки есть элемент <a href=" http://hdrezka9bsbhq.org/ " target="_blank" .....
Как мне извлечь из этого элемента ссылку, если ссылка каждый раз разная?
Голосование за лучший ответ
RatÆCat Оракул (51713) 3 месяца назад
Найти первые двойные кавычки, найти вторые двойные кавычки. Скопировать всё сежду ними
Владимир ПатенкоУченик (225) 3 месяца назад
спасибо
Илья Трошин Профи (643) 3 месяца назад
Получать текст после протокола http/https (что мол идёт после слэша от протокола) и так до следующего слэша:
Делить символы в ссылке всей, циклом проходиться, сначала ищешь начало и записываешь все символы до тех пор, пока цикл не найдёт следующий слэш, тут break и всё. Или я неправильно понял вопрос
Владимир ПатенкоУченик (225) 3 месяца назад
спасибо
Илья ТрошинПрофи (643) 3 месяца назад
Либо регулярными выражениями (более правильный способ):

 import re 

def extract_href(body: str) -> str:
match = re.search(r']*href\s*=\s*[\"\']([^\"\']+)[\"\']', body, re.IGNORECASE)
return match.group(1) if match else None

body = '.........'
extracted_link = extract_href(body)

if extracted_link:
print(f"Извлеченная ссылка: {extracted_link}")
else:
print("Ссылка не найдена.")
Elepsis Eclipse Гений (67240) Илья Трошин,
 body = ''' 
    Эта регулярка выдаст 'moo'
    
Elepsis Eclipse Гений (67240) 3 месяца назад
Неужели успел до рабов ИИ =)

Изучать регулярные выраженя...
 import re 

s = '''

href="а эту не возьмем"
'''


match = re.findall(r''']+?href\s*=\s*"([^"]+)"''', s)

for link in match:
link = link.strip()

print(link)
findall по непонятным мне причинам сразу выдает строку в группе захвата (в скобках), если оно одно. Но кортеж если их много. И совпадение целиком, если их 0. Весело питонистам))
/bin/laden Искусственный Интеллект (110787) 3 месяца назад
ругуляркой
.*<a href=".*(http://[^" ]*).*
и извлечь 1 группу
Elepsis EclipseГений (67240) 3 месяца назад
 
Похожие вопросы