Обрезка ссылки python
У меня есть ссылка по типу: https://example.com/example/example/2041674-Craps/313553930-Player-1-Player-2/
Мне нужно обрезать эту ссылку чтобы остались вот эти цифры -> 313553930
Обратить это всё в список и получать всё по индексу не выйдет потому, что ссылка меняется ежедневно и вместо https://example.com/ может быть https://example-123.com/ поэтому получится смещение и это не подходит.
Ответы (3 шт):
Можно регуляркой вытаскивать, например:
import re
urls = [
'https://example.com/example/example/2041674-Craps/313553930-Player-1-Player-2/',
'https://example-123.com/example/2041674-Craps/313553930-Player-1-Player-2/',
]
for url in urls:
items = re.findall(r'/(\d+)-Player', url)
print(items[-1])
Ну такой ещё вариант для разнообразия. Хотя из-за того, что в конце ссылки может быть или не быть / пришлось лишний filter писать на всякий случай:
url = "https://example.com/example/example/2041674-Craps/313553930-Player-1-Player-2/"
print(list(filter(len, url.split('/')))[-1].split('-')[0])
# 313553930
Если / в конце точно всегда есть, то гораздо короче можно написать:
print(url.split('/')[-2].split('-')[0])
Ну или так ещё с убиранием / если он есть, по совету insolor:
print(url.rstrip('/').split('/')[-1].split('-')[0])
Через регулярки можно еще через re.search() вытащить, хотя re.findall будет удобнее, не выдавая ошибку при пустом поиске.
import re
urls = [
'https://example.com/example/example/2041674-Craps/313553930-Player-1-Player-2/',
'https://example-123.com/example/2041674-Craps/313553930-Player-1-Player-2/',
]
for url in urls:
items = re.search('/(\d+)-Player', url).group(1)
print(items)
Можно еще через split() строки с поиском вхождения Player
for url in urls:
for url in urls:
print(next((v.split('-')[0] for v in url.split('/') if 'player' in v.lower()), None))
Во всех случаях имеем вывод:
313553930
313553930