Обрезка ссылки до нужных данных Python
У меня есть ссылка по типу: https://example.com/example/example/FIFA/1939256-FIFA18-Penalty/322917680-Real-Madrid-Barcelona/
Мне нужно обрезать эту ссылку чтобы остались вот эти цифры -> 322917680
Обратить это всё в список и получать всё по индексу не выйдет потому, что ссылка меняется ежедневно и вместо https://example.com/ может быть https://example-123.com/ поэтому получится смещение и это не подходит.
Ответы (4 шт):
Это легко сделать с помощью регулярных выражений.
import re
s = 'https://example.com/example/example/FIFA/1939256-FIFA18-Penalty/322917680-Real-Madrid-Barcelona/'
result = re.findall( r'^.*/(\d*)-Real-Madrid-Barcelon', s)
value = result[0]
Функция re.findall найдёт в строке все подходящие подстроки и вернёт в виде списка. В переменную value сохраняем первый элемент из возвращённых, так как мы ищем лишь одно значение и будет найдено лишь одно.
Если вдруг понадобится вытаскивать обе цифры, то изменяем шаблон регулярного выражения на такой: result = re.findall( r'/(\d*)-', s)
Теперь в result лежит такой список: ['1939256', '322917680']
from urllib import parse
from pathlib import Path
if __name__ == '__main__':
url = 'https://example.com/example/example/FIFA/1939256-FIFA18-Penalty/322917680-Real-Madrid-Barcelona/'
url_path = parse.urlparse(url).path
path = Path(url_path)
print(path.name.split('-')[0])
Также кроме re можно сделать так:
link = 'https://example.com/example/example/FIFA/1939256-FIFA18-Penalty/322917680-Real-Madrid-Barcelona/'
last_crumb = link.removesuffix('/').split('/')[-1]
print(last_crumb)
# 322917680-Real-Madrid-Barcelona
А дальше можно
last_crumb[:9] # '322917680'
last_crumb.split('-')[0] # '322917680'
Или можно так
s = 'https://example.com/example/example/FIFA/1939256-FIFA18-Penalty/322917680-Real-Madrid-Barcelona/'
print(s[:-1].split('/')[-1].split('-')[0])