The following solution, which uses pathlib
to parse the path obtained from urllib.parse
allows to get the last part even when a terminal slash is present:
import urllib.parse
from pathlib import Path
urls = [
"http://www.test.invalid/demo",
"http://www.test.invalid/parent/child",
"http://www.test.invalid/terminal-slash/",
"http://www.test.invalid/query-params?abc=123&works=yes",
"http://www.test.invalid/fragment#70446893",
"http://www.test.invalid/has/all/?abc=123&works=yes#70446893",
]
for url in urls:
url_path = Path(urllib.parse.urlparse(url).path)
last_part = url_path.name # use .stem to cut file extensions
print(f"{last_part=}")
yields:
last_part='demo'
last_part='child'
last_part='terminal-slash'
last_part='query-params'
last_part='fragment'
last_part='all'