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
.
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]
Une autre manière (idio (ma) tic):
URL.split("/")[-1]
rsplit
devrait être à la hauteur de la tâche:
In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
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
Vous pouvez faire comme ça:
head, tail = os.path.split(url)
Où tail sera votre nom de fichier.
extracted_url = url[url.rfind("/")+1:];
Voici une façon plus générale de procéder de la sorte:
re.sub(r'^.+/([^/]+)$', r'\1', url)
Fractionnez l'URL et sautez le dernier élément url.split('/').pop()
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
folderD
partition
et rpartition
sont également utiles pour de telles choses:
url.rpartition('/')[2]