如何在URL中的最后一次斜杠后获取所有内容?

时间:2011-08-31 07:23:22

标签: python parsing url

如何在Python中的URL中提取最后一个斜杠后面的内容?例如,这些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

13 个答案:

答案 0 :(得分:189)

您不需要花哨的东西,只需看the string methods in the standard library,您就可以轻松地在“文件名”部分和其他部分之间分割您的网址:

url.rsplit('/', 1)

所以你可以通过以下方式获得你感兴趣的部分:

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

答案 1 :(得分:52)

另一种(idio(ma)tic)方式:

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

答案 2 :(得分:13)

rsplit应该完成任务:

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

答案 3 :(得分:7)

你不能这样做:

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

其中tail将是您的文件名。

答案 4 :(得分:6)

如果你愿意,可以使用

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

答案 5 :(得分:2)

extracted_url = url[url.rfind("/")+1:];

答案 6 :(得分:2)

这是一种更通用的正则表达方式:

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

答案 7 :(得分:1)

使用urlparse来获取路径,然后使用/个字符来获取split的路径:

from urllib.parse import urlparse

my_url = "http://example.com/some/path/last?somequery=param"
last_path_fragment = urlparse(my_url).path.split('/')[-1]  # returns 'last'

注意:如果您的网址以/字符结尾,则上面的内容将返回''(即空字符串)。如果要以不同的方式处理该情况,则需要strip末尾的/字符,然后再分割路径:

my_url = "http://example.com/last/"
# handle URL ending in `/` by removing it.
last_path_fragment = urlparse(my_url).path.rstrip('/').split('/')[-1]  # returns 'last'

答案 8 :(得分:0)

partitionrpartition对于这些事情也很方便:

url.rpartition('/')[2]

答案 9 :(得分:0)

拆分网址并弹出最后一个元素 url.split('/').pop()

答案 10 :(得分:0)

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

文件夹D

    
  

答案 11 :(得分:0)

拆分 URL 并弹出最后一个元素

const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];

console.log(plants.pop());
// expected output: "tomato"

console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]

答案 12 :(得分:-1)

url ='http://www.test.com/page/TEST2'.split('/')[4]
print url

输出:TEST2