提取URL的一部分 - python

时间:2013-07-17 09:08:21

标签: python regex url python-2.7

我有一个URL,例如:

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

从这个网址我只想提取“asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5”我怎么能这样做?

我仍在学习正则表达式,但我无法解决上述问题。任何建议将不胜感激。

3 个答案:

答案 0 :(得分:9)

您可以使用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

如果您需要来自网址的其他信息,这非常有用(您可print res查看您可以获得的其他信息;)

如果您使用的是Python 3,则必须执行from urllib.parse import urlparse

答案 1 :(得分:7)

你真的不需要正则表达式。只需拆分字符串:

url.split('/')[-1]

答案 2 :(得分:3)

根据Python的版本,您需要Python 2.x中的urlparsehttp://docs.python.org/2/library/urlparse.html)或Python 3.x中的urllib.parsehttp://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”。