たとえば、次の URL があります。
http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
この URL から ' ' だけを抽出したいのですがasset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
、どうすればよいですか?
私はまだ正規表現を学んでおり、上記の問題を解決できません。任意の提案をいただければ幸いです。
たとえば、次の URL があります。
http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
この URL から ' ' だけを抽出したいのですがasset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
、どうすればよいですか?
私はまだ正規表現を学んでおり、上記の問題を解決できません。任意の提案をいただければ幸いです。
urlparse
同じであると仮定して使用できますasset.epx
:
>>> import urlparse
>>> url = 'http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5'
>>> res = urlparse.urlparse(url)
>>> print 'asset.epx?'+res.query
asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
これは、URL から他の情報が必要になった場合に便利です (print res
取得できる他の情報を確認できます ;))
ただし、Python 3 を使用している場合は、from urllib.parse import urlparse
.
この特定の例では、文字列を分割するだけで十分です。
url.split('/')[-1]
より複雑な URL をお持ちの場合は、それを解析するためにyarl ライブラリをお勧めします:
>>> import yarl # pip install yarl
>>> url = yarl.URL('http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5')
>>> url.path_qs
'/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5'
組み込みurllib.parse
ライブラリを使用することもできますが、次のような複雑なことを始めると邪魔になることがわかりました。
>>> url.update_query(asd='foo').with_fragment('asd/foo/bar')
URL('http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5&asd=foo#asd/foo/bar')
Python のバージョンに応じて、urlparse
Python 2.x ( http://docs.python.org/2/library/urlparse.html ) またはurllib.parse
Python 3.x ( http://docs.python.org ) のいずれかが必要です。 /2/library/urlparse.html )。Python 3 (私が利用できるすべて) では、次のスニペットは、正規表現に頼らずに必要なものを実現します。
import urllib.parse
address = "http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5"
parsed = urllib.parse.urlsplit(address)
print("{}?{}".format(parsed.path.split("/")[-1], parsed.query)
ここでの出力は「asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5」です。