Wie kann ich alles extrahieren, was auf den letzten Schrägstrich in einer URL in Python folgt? Diese URLs sollten beispielsweise Folgendes zurückgeben:
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
Ich habe urlparse ausprobiert, aber das gibt mir den vollständigen Pfad Dateinamen, wie z page/page/12345
.
...?foo=bar
und Sie dies nicht möchten; Ich würde vorschlagen,urlparse
in Kombination mit Naegsbasename
-Vorschlag zu verwenden.Antworten:
Sie brauchen keine ausgefallenen Dinge, sehen Sie sich nur die Zeichenfolgenmethoden in der Standardbibliothek an und Sie können Ihre URL einfach zwischen dem Teil 'Dateiname' und dem Rest aufteilen:
So können Sie den Teil, an dem Sie interessiert sind, einfach erhalten mit:
quelle
url.rsplit('/', 1)
Gibt eine Liste zurück undurl.rsplit('/', 1)[-1]
ist das Bit nach dem letzten Schrägstrich.http://www.example.com/foo/?entry=the/bar#another/bar
. Eine grundlegende Analyse wiersplit
ist jedoch in Ordnung, wenn Sie absolut sicher sind, dass Ihre Abfrage- oder Fragmentparameter niemals Schrägstriche enthalten. Ich schaudere jedoch, wenn ich daran denke, wie viele Codebasen diesenrsplit
Code und den damit verbundenen Fehler bei der Abfragebehandlung tatsächlich enthalten . Menschen, die ABSOLUTE SICHERHEIT UND ZUVERLÄSSIGKEIT wünschen, solltenurllib.parse()
stattdessen verwenden! Sie können dann den zurückgegebenenpath
Wert verwenden und DIESES teilen, um sicherzustellen, dass Sie NUR den Pfad geteilt haben.from urllib.parse import urlparse; p = urlparse("http://www.example.com/foo.htm?entry=the/bar#another/bar"); print(p.path.rsplit("/", 1)[-1])
Ergebnis:foo.htm
Noch ein (idio (ma) tic) Weg:
quelle
rsplit
.rsplit
sollte der Aufgabe gewachsen sein:quelle
Sie können dies tun:
Wo Schwanz wird Ihr Dateiname sein.
quelle
urlparse ist in Ordnung, wenn Sie möchten (z. B. um Abfragezeichenfolgenparameter zu entfernen).
Ausgabe:
quelle
quelle
from pathlib import Path print(f"Path(redirected_response.url).stem: {Path(redirected_response.url).stem!r}")
Hier ist eine allgemeinere Regex-Methode:
quelle
quelle
from string import rfind
partition
undrpartition
sind auch praktisch für solche Dinge:quelle
Teilen Sie die URL und platzieren Sie das letzte Element
url.split('/').pop()
quelle
Ausgabe :
TEST2
.quelle
-1
als Index übergeben, sonst funktioniert dies nur bei Zeichenfolgen mit genau so vielen/