Как правильно разделить(рассплитить) строку python
Нужно получить название сайта из приходящего урла Пример на входе: https://site.com/some/some Мне нужно: https://site.com/
Я могу рассплитить и пересобрать:
site = 'https://site.com/some/some'
site_spl = site.split('/')
site_sum = site_spl[0] + '//' + site_spl[2] + '/'
Но нет ли такого варианта, чтобы сразу обратиться к третьему слэшу и рассплитить по нему или как-то иначе сделать это изящнее?
Ответы (4 шт):
Автор решения: Андрей Крузлик
→ Ссылка
Используйте регулярное выражение
import re
reg = r'^((http[s]?|ftp):\/\/)?\/?([^\/\.]+\.)*?([^\/\.]+\.[^:\/\s\.]{2,3}(\.[^:\/\s\.]{2,3})?)(:\d+)?($|\/)'
s = 'https://site.com/some/some'
result = re.search(reg, s)
print (result.group(0))
Автор решения: CrazyElf
→ Ссылка
Можно тоже самое сделать просто короче и чуть правильнее:
site = 'https://site.com/some/some'
print('/'.join(site.split('/')[:3]))
Вывод:
https://site.com
Или с помощью библиотеки:
from urllib.parse import urlparse
site = 'https://site.com/some/some'
url = urlparse(site)
print(f'{url.scheme}://{url.netloc}')
Вывод:
https://site.com
Если в конце нужен слеш - можно добавить его вручную через + '/'.
Автор решения: TigerTV.ru
→ Ссылка
Через find:
site = 'https://site.com/some/some'
res = site[:site.find('/', 2 + site.find('/'))]
print(res)
Автор решения: Namerek
→ Ссылка
from pathlib import Path
site = 'https://site.com/some/some'
f = Path(site)
print(f.parts)
print(f.parts[2:])
# ('https:', 'site.com', 'some', 'some')
# ('some', 'some')
или еще вариант c регуляркой
import re
regexp = re.compile(r'/+')
site = 'https://site.com/some/some'
parts = regexp.split(site)
print(parts)
print(parts[2:])
# ['https:', 'site.com', 'some', 'some']
# ['some', 'some']
Ну и немного дополню уже предложенный вариант:
from urllib.parse import urlparse
site = 'https://site.com/some/some'
url = urlparse(site)
print(f'{url.scheme = }', f'{url.netloc = }', f'{url.path = }', sep='\n')
# url.scheme = 'https'
# url.netloc = 'site.com'
# url.path = '/some/some'