¿Cómo puedo extraer lo que sigue a la última barra en una dirección URL en Python? Por ejemplo, estas Url debe devolver lo siguiente:

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 que me da la ruta completa de acceso de nombre de archivo, tales como page/page/12345.

InformationsquelleAutor mix | 2011-08-31

11 Comentarios

  1. 216

    No se necesitan cosas, acaba de ver la cadena de métodos en la biblioteca estándar y usted puede fácilmente dividir su url entre ‘nombre de archivo’ parte y el resto:

    url.rsplit('/', 1)

    Así que usted puede conseguir la parte que interesa simplemente con:

    url.rsplit('/', 1)[-1]
    • url.rsplit('/', 1) devuelve una lista, y url.rsplit('/', 1)[-1] es poco después de la última barra.
    • Otra forma de hacerlo sería: url.rsplit(‘/’, 1).pop()
  2. 61

    Uno más (los(ma)tic) forma:

    URL.split("/")[-1]
    • Sí, este es el más sencillo de utilizar rsplit.
  3. 8

    Que usted puede hacer como este:

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

    Donde la cola será su nombre de archivo.

  4. 6

    urlparse está bien para usar, si se desea (por ejemplo, para deshacerse de los parámetros 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]))

    De 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
  5. 2
    extracted_url = url[url.rfind("/")+1:];
    • se olvidó de la from string import rfind de su respuesta
  6. 0

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

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

    De salida: TEST2.

    • Usted realmente debe pasar -1 como el índice, de lo contrario, esto sólo funciona en las cadenas con exactamente que muchos /

Dejar respuesta

Please enter your comment!
Please enter your name here