web-dev-qa-db-fra.com

Comment tout obtenir après la dernière barre oblique dans une URL?

Comment puis-je extraire ce qui suit la dernière barre oblique d'une URL en Python? Par exemple, ces URL doivent renvoyer les éléments suivants:

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

J'ai essayé urlparse, mais cela me donne le chemin complet du nom de fichier, tel que page/page/12345.

72
mix

Vous n'avez pas besoin de choses fantaisistes, vous n'avez qu'à regarder les méthodes de chaîne de caractères dans la bibliothèque standard et vous pouvez facilement séparer votre url entre la partie 'nom de fichier' et le reste:

url.rsplit('/', 1)

Vous pouvez donc obtenir simplement la partie qui vous intéresse:

url.rsplit('/', 1)[-1]
176
Luke404

Une autre manière (idio (ma) tic):

URL.split("/")[-1]
51
Kimvais

rsplit devrait être à la hauteur de la tâche:

In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
13
Benjamin Wohlwend

vous pouvez utiliser urlparse si vous voulez (par exemple, vous débarrasser de tout paramètre de chaîne de requête).

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

Sortie:

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
6
Jacob Wan

Vous pouvez faire comme ça:

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

Où tail sera votre nom de fichier.

6
Winston
extracted_url = url[url.rfind("/")+1:];
2
fardjad

Voici une façon plus générale de procéder de la sorte:

    re.sub(r'^.+/([^/]+)$', r'\1', url)
2
sandoronodi

Fractionnez l'URL et sautez le dernier élément url.split('/').pop()

0
Old Monk
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))

folderD

0
Rochan

partition et rpartition sont également utiles pour de telles choses:

url.rpartition('/')[2]
0
tzot