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
などのフルパスファイル名が得られます。
派手なものは必要ありません。 標準ライブラリの文字列メソッド を参照してください。URLを「ファイル名」部分と残りの部分に簡単に分割できます。
url.rsplit('/', 1)
興味のある部分を簡単に取得できます:
url.rsplit('/', 1)[-1]
もう1つの(idio(ma)tic)方法:
URL.split("/")[-1]
rsplit
はタスク次第です:
In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
このようにすることができます:
head, tail = os.path.split(url)
Tailはファイル名になります。
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
extracted_url = url[url.rfind("/")+1:];
これを行う、より一般的な正規表現の方法を次に示します。
re.sub(r'^.+/([^/]+)$', r'\1', url)
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
folderD
URLを分割し、最後の要素url.split('/').pop()
をポップします
partition
とrpartition
もそのようなものに便利です:
url.rpartition('/')[2]