¿Cómo puedo extraer lo que sigue a la última barra en una URL en Python? Por ejemplo, estas URL deben 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
Probé urlparse, pero eso me da el nombre de archivo de ruta completo, como page/page/12345
.
...?foo=bar
y no desea esto; Sugeriría usarlourlparse
en combinación con la sugerencia debasename
naeg.Respuestas:
No necesita cosas sofisticadas, solo vea los métodos de cadena en la biblioteca estándar y puede dividir fácilmente su URL entre la parte 'nombre de archivo' y el resto:
Para que pueda obtener la pieza que le interesa simplemente con:
fuente
url.rsplit('/', 1)
devuelve una lista yurl.rsplit('/', 1)[-1]
es el bit después de la última barra.http://www.example.com/foo/?entry=the/bar#another/bar
. Pero el análisis básico comorsplit
está bien si está absolutamente seguro de que nunca habrá barras inclinadas en su consulta o parámetros de fragmentos. Sin embargo, me estremezco al pensar en cuántas bases de código contienen realmente estersplit
código y su error asociado con el manejo de consultas. ¡Las personas que quieren SEGURIDAD Y FIABILIDAD ABSOLUTAS deberían usar en suurllib.parse()
lugar! Luego puede usar elpath
valor que devuelve y dividir ESO para asegurarse de haber dividido SOLO la ruta.from urllib.parse import urlparse; p = urlparse("http://www.example.com/foo.htm?entry=the/bar#another/bar"); print(p.path.rsplit("/", 1)[-1])
Resultado:foo.htm
Una forma más (idio (ma) tic):
fuente
rsplit
.rsplit
debe estar a la altura de la tarea:fuente
Puedes hacer así:
Donde cola será su nombre de archivo.
fuente
urlparse está bien para usar si lo desea (por ejemplo, para deshacerse de cualquier parámetro de cadena de consulta).
Salida:
fuente
fuente
from pathlib import Path print(f"Path(redirected_response.url).stem: {Path(redirected_response.url).stem!r}")
Aquí hay una forma de expresión regular más general de hacer esto:
fuente
fuente
from string import rfind
de su respuestapartition
yrpartition
también son útiles para tales cosas:fuente
Divide la URL y abre el último elemento.
url.split('/').pop()
fuente
Salida:
TEST2
.fuente
-1
como índice, de lo contrario, esto solo funciona en cadenas con exactamente esa cantidad/