Как я могу извлечь все, что следует за последней косой чертой в URL-адресе в Python? Например, эти URL-адреса должны возвращать следующее:
URL: http://www.test.com/TEST1
returns: TEST1
URL: http://www.test.com/page/TEST2
returns: TEST2
URL: http://www.test.com/page/page/12345
returns: 12345
Я пробовал urlparse, но это дает мне полный путь к имени файла, например page/page/12345
.
...?foo=bar
а вам это не нужно; Я бы предложил использоватьurlparse
в сочетании с -предложениемbasename
Naeg.Ответы:
Вам не нужны причудливые вещи, просто просмотрите строковые методы в стандартной библиотеке, и вы можете легко разделить свой URL-адрес между частью имени файла и остальными:
Таким образом, вы можете получить интересующую вас деталь с помощью:
источник
url.rsplit('/', 1)
возвращает список, иurl.rsplit('/', 1)[-1]
это бит после последней косой черты.http://www.example.com/foo/?entry=the/bar#another/bar
. Но базовый синтаксический анализrsplit
- это нормально, если вы абсолютно уверены, что в вашем запросе или параметрах фрагмента никогда не будет косой черты. Однако мне не терпится подумать о том, сколько баз кода на самом деле содержат этотrsplit
код и связанную с ним ошибку с обработкой запросов. Люди, которые хотят АБСОЛЮТНОЙ БЕЗОПАСНОСТИ И НАДЕЖНОСТИ, должны использоватьurllib.parse()
вместо этого! Затем вы можете использоватьpath
возвращаемое значение и разделить ТО, чтобы убедиться, что вы разделили ТОЛЬКО путь.from urllib.parse import urlparse; p = urlparse("http://www.example.com/foo.htm?entry=the/bar#another/bar"); print(p.path.rsplit("/", 1)[-1])
Результат:foo.htm
Еще один (идио (ма) тик) способ:
источник
rsplit
.rsplit
должен соответствовать задаче:источник
Сделать можно так:
Где хвост будет вашим именем файла.
источник
urlparse можно использовать, если вы хотите (скажем, чтобы избавиться от любых параметров строки запроса).
Вывод:
источник
источник
from pathlib import Path print(f"Path(redirected_response.url).stem: {Path(redirected_response.url).stem!r}")
Вот более общий способ сделать это с помощью регулярного выражения:
источник
источник
from string import rfind
из вашего ответаpartition
аrpartition
также пригодятся для таких вещей:источник
Разделите URL-адрес и вставьте последний элемент
url.split('/').pop()
источник
Выход:
TEST2
.источник
-1
в качестве индекса, иначе это работает только для строк с таким количеством/