web-dev-qa-db-ja.com

URLの最後のスラッシュの後にすべてを取得する方法は?

PythonでURLの最後のスラッシュに続くものを抽出するにはどうすればよいですか?たとえば、これらのURLは次を返します。

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

Urlparseを試してみましたが、page/page/12345などのフルパスファイル名が得られます。

87
mix

派手なものは必要ありません。 標準ライブラリの文字列メソッド を参照してください。URLを「ファイル名」部分と残りの部分に簡単に分割できます。

url.rsplit('/', 1)

興味のある部分を簡単に取得できます:

url.rsplit('/', 1)[-1]
205
Luke404

もう1つの(idio(ma)tic)方法:

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

rsplit はタスク次第です:

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

このようにすることができます:

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

Tailはファイル名になります。

8
Winston

urlparseは、必要に応じて使用できます(たとえば、クエリ文字列パラメーターを削除する場合)。

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]))

出力:

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
extracted_url = url[url.rfind("/")+1:];
2
fardjad

これを行う、より一般的な正規表現の方法を次に示します。

    re.sub(r'^.+/([^/]+)$', r'\1', url)
2
sandoronodi
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))

folderD

1
Rochan

URLを分割し、最後の要素url.split('/').pop()をポップします

0
Old Monk

partitionrpartitionもそのようなものに便利です:

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