Обрезка ссылки до определённого '/'

К примеру у меня есть ссылка https://example.com/example.php А мне нужно чтобы у меня на выходе была ссылка по типу этой https://example.com/ Как я могу это сделать это при помощи python?


Ответы (3 шт):

Автор решения: TerminaliusDeveloper

возьми ссылку за переменную, и посчитай все символы, до которого нужно обрезать, к примеру:

https://example.com/ - 20 символов.

Попробуй так:

a = https://example.com/
a.lower()[:20]

В итоге, всё что после 20-ого символа обрезается до 20-ого символа.

Если непонятно, глянь вот это: https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html

→ Ссылка
Автор решения: entithat

Будем использовать встроенный модуль urllib.parse

from urllib.parse import urlparse

urls = [
  'https://example.com/example.php',
  'https://example.com/example.php?a=12&b=45',
  'https://example.com',
  'https://example.com/',
  'https://example.com/hello/world',
  'https://example.com/hello/world/child.php',
]

for url in urls:
    u = urlparse(url)
    print(f'{u.scheme}://{u.netloc}/') # https://example.com/

Либо конкретно для полных адресов:

url = 'https://example.com/example.php'
print(url[:url.rindex('/') + 1]) # https://example.com/
→ Ссылка
Автор решения: Andy Pavlov

Добавлю еще вариант через регулярку. Список урлов взял у entithat. Спасибо.

import re
        
urls = [
  'https://example.com/example.php',
  'https://example.com/example.php?a=12&b=45',
  'https://example.com',
  'https://example.com/',
  'https://example.com/hello/world',
  'http://example.com/hello/world/child.php',
]
        
print([re.search('https?://[\w\-.]+/?', u).group(0) for u in urls])
    
# ['https://example.com/', 'https://example.com/', 'https://example.com', 'https://example.com/', 'https://example.com/', 'http://example.com/']
→ Ссылка