2011-08-31 26 views
48

Come posso estrarre ciò che segue l'ultima barra in un URL in Python? Ad esempio, questi URL dovrebbe restituire il seguente:Come ottenere tutto dopo l'ultima barra in un 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 

Ho provato urlparse, ma che mi dà il nome del file completo del percorso, come ad esempio page/page/12345.

+1

Se l'URL potrebbe contenere querystrings come '... foo = bar' e non si vuole questo?; Suggerisco di usare 'urlparse' in combinazione con il suggerimento' basename' di naeg. – plundra

+0

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

risposta

133

Non hai bisogno di cose di fantasia, basta vedere the string methods in the standard library e si può facilmente dividere il vostro URL tra la parte 'filename' e il resto:

url.rsplit('/', 1) 

in modo da poter ottenere la parte che ti interessa semplicemente con:

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

Amico, sei un baller. Grazie! – mdandr

+0

Soluzione molto bella ... Impressionato –

+4

'url.rsplit ('/', 1)' restituisce una lista, e 'url.rsplit ('/', 1) [- 1]' è il bit dopo l'ultima barra. – Hugo

10

rsplit dovrebbe essere all'altezza del compito:

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

ha dimenticato il 'da stringa import rfind' dalla tua risposta – Kimvais

40

Un altro (idio (ma) tic) modo:

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

Questa dovrebbe essere la risposta accettata –

0

partition e rpartition sono anche utili per queste cose:

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

uscita: TEST2.

+1

Dovresti davvero passare' -1' come l'indice, altrimenti funziona solo su stringhe con esattamente tanti '/' –

4

urlparse può essere utilizzato se si desidera (ad esempio, eliminare tutti i parametri della stringa di query).

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

uscita:

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

Si cand fare in questo modo:

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

Dove coda sarà il nome del file.

0

Spalato l'url e pop l'ultimo elemento url.split('/').pop()

Problemi correlati