2011-08-31 38 views
48

Làm thế nào tôi có thể trích xuất bất cứ điều gì sau dấu gạch chéo cuối cùng trong một URL bằng Python? Ví dụ: các URL này phải trả lại những điều sau:Làm cách nào để tải mọi thứ sau dấu gạch chéo cuối cùng trong 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 

Tôi đã thử urlparse nhưng cung cấp cho tôi tên tệp đầy đủ, chẳng hạn như page/page/12345.

+1

Nếu URL có thể chứa querystrings như '... foo = bar' và bạn không muốn điều này?; Tôi muốn đề nghị sử dụng 'urlparse' kết hợp với đề xuất' basename' của naeg. – plundra

+0

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

Trả lời

133

Bạn không cần phải điều lạ mắt, chỉ thấy the string methods in the standard library và bạn có thể dễ dàng chia url của bạn giữa phần 'filename' và phần còn lại:

url.rsplit('/', 1) 

Vì vậy, bạn có thể nhận được một phần mà bạn quan tâm đơn giản với:

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

Dude, bạn là người bắn bóng. Cảm ơn bạn! – mdandr

+0

Giải pháp rất đẹp ... Ấn tượng –

+4

'url.rsplit ('/', 1)' trả về một danh sách và 'url.rsplit ('/', 1) [- 1]' là bit sau dấu gạch chéo cuối cùng. – Hugo

10

rsplit nên lên đến nhiệm vụ:

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

quên 'từ chuỗi nhập khẩu rfind' khỏi câu trả lời của bạn – Kimvais

40

Một hơn (idio (ma) tic) cách:

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

Đây phải là câu trả lời được chấp nhận –

0

partitionrpartition cũng được sử dụng cho những thứ như:

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

Output: TEST2.

+1

Bạn thực sự nên chuyển' -1' làm chỉ mục, nếu không thì điều này chỉ hoạt động trên các chuỗi với chính xác là nhiều '/' –

4

urlparse là tốt để sử dụng nếu bạn muốn (nói, để loại bỏ bất kỳ tham số chuỗi truy vấn nào).

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])) 

Output:

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

Bạn CAND làm như thế này:

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

đâu đuôi sẽ là tên file của bạn.

0

Chia url và bật yếu tố cuối cùng url.split('/').pop()

Các vấn đề liên quan