webentwicklung-frage-antwort-db.com.de

Wie bekomme ich alles nach dem letzten Schrägstrich in einer URL?

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.

72
mix

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]
176
Luke404

Ein weiterer (idio (ma) tic) Weg:

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

rsplit sollte der Aufgabe gewachsen sein:

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

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

Das kannst du so machen:

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

Wo bleibt dein Dateiname?.

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

Hier ist ein allgemeiner, regulärer Weg, dies zu tun:

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

Teilen Sie die URL und schließen Sie das letzte Element url.split('/').pop()

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

folderD

0
Rochan

partition und rpartition sind auch für solche Dinge hilfreich:

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