2011-08-31 79 views
48

如何提取Python中URL中最後一個斜槓後面的內容?例如,這些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

+1

如果URL中可能包含查詢字符串'...富= bar',你不想要這個?;我建議使用'urlparse'結合naeg的'basename'-建議。 – plundra

+0

http://docs.python.org/library/urlparse.html#module-urlparse –

回答

133

你不需要花哨的東西,只看到the string methods in the standard library,你可以很容易地拆分「文件名」部分和其餘部分之間的網址:

url.rsplit('/', 1) 

所以,你可以得到你感興趣的僅僅是部分搭配:

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

老兄,你是一個成年人。謝謝! – mdandr

+0

非常漂亮的解決方案...印象深刻 –

+4

'url.rsplit('/',1)'返回一個列表,並且'url.rsplit('/',1)[ - 1]'是最後一個斜槓後的位。 – Hugo

10

rsplit應達的任務是:

In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1] 
Out[1]: 'TEST2' 
2
extracted_url = url[url.rfind("/")+1:]; 
+0

忘記從你的答案中的'from string import rfind' – Kimvais

40

還有一個(特發(MA)TIC)的方式:

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

這應該是被接受的答案 –

0

partitionrpartition也很方便這樣的事情:

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

輸出:TEST2

+1

你真的應該通過'-1'作爲索引,否則這隻適用於具有那麼多'/'的字符串 –

4

如果你想要(如擺脫任何查詢字符串參數),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 
4

您CAND這樣做:

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

尾巴在哪裏將是你的文件名。

0

斯普利特URL並彈出最後一個元素 url.split('/').pop()

相關問題