it-swarm.com.ru

Как получить все после последней косой черты в URL?

Как извлечь то, что следует за последним слешем в 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.

72
mix

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

url.rsplit('/', 1)

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

url.rsplit('/', 1)[-1]
176
Luke404

Еще один (идиотский) способ:

URL.split("/")[-1]
51
Kimvais

rsplit должен соответствовать задаче:

In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
13
Benjamin Wohlwend

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
6
Jacob Wan

Вы можете сделать так:

head, tail = os.path.split(url)

Где tail будет вашим именем файла.

6
Winston
extracted_url = url[url.rfind("/")+1:];
2
fardjad

Вот более общий, регулярный способ сделать это:

    re.sub(r'^.+/([^/]+)$', r'\1', url)
2
sandoronodi

Разделите URL и вытолкните последний элемент url.split('/').pop()

0
Old Monk
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))

folderD

0
Rochan

partition и rpartition также удобны для таких вещей:

url.rpartition('/')[2]
0
tzot