Вы можете использовать функцию urllib.parse.urlsplit()
.Результатом является структурированный результат анализа , именованный кортеж с дополнительными функциями.
Используйте метод namedtuple._replace()
, чтобы изменить проанализированные значения результата, затем используйте SplitResult.geturl()
метод для повторного получения строки URL.
Чтобы удалить строку запроса, задайте для query
значение None
:
from urllib.parse import urlsplit
updated_url = urlsplit(url)._replace(query=None).geturl()
Демонстрация:
>>> from urllib.parse import urlsplit
>>> url = 'https://example.com/example/path?query_string=everything+after+the+questionmark'
>>> urlparse.urlsplit(url)._replace(query=None).geturl()
'https://example.com/example/path'
Для Python 2 та же функция доступна под именем urlparse.urlsplit()
.
Вы также можете использовать функцию urllparse.parse.urlparse()
;для URL-адресов без каких-либо параметров пути результат будет таким же.Эти две функции отличаются в том, как обрабатываются параметры пути;urlparse()
поддерживает только параметры пути для последнего сегмента пути, в то время как urlsplit()
оставляет параметры пути на месте в пути, оставляя анализ таких параметров для другого кода.Поскольку в настоящее время параметры пути используются редко [более поздние URL RFC полностью исключили эту функцию), разница носит академический характер.urlparse()
использует urlsplit()
и без параметров, не добавляет ничего, кроме дополнительных издержек.Лучше просто использовать urlsplit()
напрямую.