4

たとえば、次の URL があります。

http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5

この URL から ' ' だけを抽出したいのですがasset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5、どうすればよいですか?

私はまだ正規表現を学んでおり、上記の問題を解決できません。任意の提案をいただければ幸いです。

4

3 に答える 3

10

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.

于 2013-07-17T09:13:36.087 に答える
8

この特定の例では、文字列を分割するだけで十分です。

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')
于 2013-07-17T09:11:05.837 に答える
3

Python のバージョンに応じて、urlparsePython 2.x ( http://docs.python.org/2/library/urlparse.html ) またはurllib.parsePython 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」です。

于 2013-07-17T09:16:51.237 に答える