Como posso extrair tudo o que segue a última barra em uma URL em Python? Por exemplo, esses URLs devem retornar o seguinte:
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
Tentei urlparse, mas ele me dá o nome do arquivo do caminho completo, como page/page/12345
.
...?foo=bar
e você não quer isso; Eu sugiro o usourlparse
em combinação com a -sugestão de Naegbasename
.Respostas:
Você não precisa de coisas fantasiosas, apenas veja os métodos de string na biblioteca padrão e você pode facilmente dividir seu url entre a parte 'nome do arquivo' e o resto:
Assim, você pode obter a parte em que está interessado simplesmente com:
fonte
url.rsplit('/', 1)
retorna uma lista eurl.rsplit('/', 1)[-1]
é o bit após a última barra.http://www.example.com/foo/?entry=the/bar#another/bar
. Mas a análise básica comorsplit
está tudo bem se você tiver certeza absoluta de que nunca haverá barras em seus parâmetros de consulta ou fragmento. No entanto, estremeço ao pensar em quantas bases de código realmente contêm essersplit
código e seu bug associado ao tratamento de consultas. Pessoas que desejam SEGURANÇA E CONFIABILIDADE ABSOLUTAS deveriam usarurllib.parse()
! Você pode então usar opath
valor que ele retorna e dividir ISSO para garantir que você dividiu SOMENTE o caminho.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
Mais uma forma (idio (má) tica):
fonte
rsplit
.rsplit
deve estar à altura da tarefa:fonte
Você pode fazer assim:
Onde tail será o nome do arquivo.
fonte
urlparse pode ser usado se você quiser (digamos, para se livrar de quaisquer parâmetros de string de consulta).
Resultado:
fonte
fonte
from pathlib import Path print(f"Path(redirected_response.url).stem: {Path(redirected_response.url).stem!r}")
Esta é uma maneira mais geral de regex de fazer isso:
fonte
fonte
from string import rfind
da sua respostapartition
erpartition
também são úteis para essas coisas:fonte
Divida o url e exiba o último elemento
url.split('/').pop()
fonte
Saída:
TEST2
.fonte
-1
como o índice, caso contrário, isso só funciona em strings com exatamente essa quantidade/