Comment puis-je extraire ce qui suit la dernière barre oblique dans 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 nom de fichier du chemin complet, tel que page/page/12345
.
...?foo=bar
et que vous ne le souhaitez pas; Je suggérerais de l'utiliserurlparse
en combinaison avec la suggestion de naegbasename
.Réponses:
Vous n'avez pas besoin de choses sophistiquées, regardez simplement les méthodes de chaîne dans la bibliothèque standard et vous pouvez facilement diviser votre URL entre la partie 'filename' et le reste:
Ainsi, vous pouvez obtenir la pièce qui vous intéresse simplement avec:
la source
url.rsplit('/', 1)
renvoie une liste eturl.rsplit('/', 1)[-1]
correspond au bit après la dernière barre oblique.http://www.example.com/foo/?entry=the/bar#another/bar
. Mais une analyse de base commersplit
c'est acceptable si vous êtes absolument certain qu'il n'y aura jamais de barres obliques dans vos paramètres de requête ou de fragment. Cependant, je frémis en pensant au nombre de bases de code contenant réellement cersplit
code et son bogue associé avec la gestion des requêtes. Les gens qui veulent une SÉCURITÉ ET UNE FIABILITÉ ABSOLUES devraient plutôt utiliserurllib.parse()
! Vous pouvez ensuite utiliser lapath
valeur qu'elle renvoie et diviser CELA pour vous assurer que vous avez divisé UNIQUEMENT le chemin.from urllib.parse import urlparse; p = urlparse("http://www.example.com/foo.htm?entry=the/bar#another/bar"); print(p.path.rsplit("/", 1)[-1])
Résultat:foo.htm
Encore une (idio (ma) tic) façon:
la source
rsplit
.rsplit
devrait être à la hauteur de la tâche:la source
Vous pouvez faire comme ceci:
Où tail sera le nom de votre fichier.
la source
urlparse peut être utilisé si vous le souhaitez (par exemple, pour vous débarrasser de tout paramètre de chaîne de requête).
Production:
la source
la source
from pathlib import Path print(f"Path(redirected_response.url).stem: {Path(redirected_response.url).stem!r}")
Voici une façon plus générale de procéder par regex:
la source
la source
from string import rfind
de votre réponsepartition
etrpartition
sont également utiles pour de telles choses:la source
Divisez l'url et affichez le dernier élément
url.split('/').pop()
la source
Sortie:
TEST2
.la source
-1
pour l'index, sinon cela ne fonctionne que sur des chaînes avec exactement ce nombre/