Как я могу извлечь то, что следует за последним слешем в 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.
page/page/12345
Вам не нужны причудливые вещи, просто посмотрите строковые методы в стандартной библиотеке , и вы можете легко разделить ваш URL между частью имени файла и остальными:
url.rsplit('/', 1)
Таким образом, вы можете получить интересующую вас деталь просто:
url.rsplit('/', 1)[-1]
Еще один (идиотический) способ:
URL.split("/")[-1]
rsplit должно соответствовать задаче:
rsplit
In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1] Out[1]: 'TEST2'
Вы можете сделать следующее:
head, tail = os.path.split(url)
Где tail будет именем вашего файла.
urlparse хорошо использовать, если вы хотите (скажем, избавиться от любых параметров строки запроса).
import urllib.parse urls = [ 'http://www.test.com/TEST1', 'http://www.test.com/page/TEST2', 'http://www.test.com/page/page/12345', 'http://www.test.com/page/page/12345?abc=123' ] for i in urls: url_parts = urllib.parse.urlparse(i) path_parts = url_parts[2].rpartition('/') print('URL: {}\nreturns: {}\n'.format(i, path_parts[2]))
Вывод:
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 URL: http://www.test.com/page/page/12345?abc=123 returns: 12345
Вот более общий способ регулярного выражения:
re.sub(r'^.+/([^/]+)$', r'\1', url)
extracted_url = url[url.rfind("/")+1:];
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
folderD
Разделить URL и вытолкнуть последний элемент url.split('/').pop()
url.split('/').pop()
url ='http://www.test.com/page/TEST2'.split('/')[4] print url
Вывод: TEST2.
TEST2