2011-08-31 15 views
48

¿Cómo puedo extraer lo que sigue a la última barra en una URL en Python? Por ejemplo, estas URL debe devolver el siguiente:¿Cómo obtener todo después de la última barra en una 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 

He intentado urlparse, pero eso me da el nombre del archivo ruta completa, como page/page/12345.

+1

Si la URL puede contener cadenas de consulta como '... foo = bar' sean y no desea esto?; Sugeriría usar 'urlparse' en combinación con la sugerencia' basename' de naeg. – plundra

+0

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

Respuesta

133

No necesita cosas de lujo, acaba de ver the string methods in the standard library y se puede dividir fácilmente su dirección URL entre la parte 'nombre' y el resto:

url.rsplit('/', 1) 

para que pueda obtener la parte que le interesa simplemente con:

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

Amigo, eres un jugador de baller. ¡Gracias! – mdandr

+0

Solución muy bonita ... Impresionante –

+4

'url.rsplit ('/', 1)' devuelve una lista, y 'url.rsplit ('/', 1) [- 1]' es el bit después de la última barra inclinada. – Hugo

10

rsplit debe ser preparado para la tarea:

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

olvidó 'from string import rfind' de su respuesta – Kimvais

40

Uno más (idio (MA) TIC) así:

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

Esta debería ser la respuesta aceptada –

0

partition y rpartition también son útiles para este tipo de cosas:

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

Salida: TEST2.

+1

Realmente debería pasar' -1' como el índice, de lo contrario, esto solo funciona en cadenas con exactamente ese '' ' –

4

urlparse está bien para usar si desea (por ejemplo, para deshacerse de cualquier parámetro de cadena de consulta).

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

Salida:

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

Usted cand hace así:

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

Cuando la cola será su nombre de archivo.

0

Dividir la url y el pop el último elemento url.split('/').pop()

Cuestiones relacionadas