Wie kann ich herausfinden, was dem 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 page/page/12345
.
Sie brauchen keine ausgefallenen Dinge, sehen Sie nur die String-Methoden in der Standardbibliothek und Sie können Ihre URL einfach zwischen 'Dateiname' und dem Rest aufteilen:
url.rsplit('/', 1)
So können Sie den Teil, den Sie interessieren, einfach erhalten mit:
url.rsplit('/', 1)[-1]
Ein weiterer (idio (ma) tic) Weg:
URL.split("/")[-1]
rsplit
sollte der Aufgabe gewachsen sein:
In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
urlparse ist in Ordnung, wenn Sie wollen (etwa, um Abfrage-Parameter loszuwerden).
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]))
Ausgabe:
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
Das kannst du so machen:
head, tail = os.path.split(url)
Wo bleibt dein Dateiname?.
extracted_url = url[url.rfind("/")+1:];
Hier ist ein allgemeiner, regulärer Weg, dies zu tun:
re.sub(r'^.+/([^/]+)$', r'\1', url)
Teilen Sie die URL und schließen Sie das letzte Element url.split('/').pop()
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
folderD
partition
und rpartition
sind auch für solche Dinge hilfreich:
url.rpartition('/')[2]