例如,我有一个 URL:
http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
从这个网址我只想提取' asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
'我怎么能这样做?
我仍在学习正则表达式,但无法解决上述问题。任何建议,将不胜感激。
例如,我有一个 URL:
http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5
从这个网址我只想提取' 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”。