在Python中使用正则表达式解析部分URL

时间:2016-08-22 06:59:11

标签: python regex python-2.7

我想使用正则表达式操作解析URL的一部分。这可能是一个老问题。但我是正则表达式的新手,并且根据我的要求进行了如此多的搜索而无法找到它。我知道ParseURL可以在这里使用。但我的网址使用得不够合理。假设我的URL如下,

url = https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed

在这里,我想找出& q =何时发生并解析,直到&接下来发生。我想删除+或中间的任何特殊字符。输出应该是,

To Be Parsed out

如果没有匹配项,则应返回原始网址。

我尝试了以下内容,

re.search('q=?([^&]+)&',url).group(0)

返回,

&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed

任何人都可以帮我解析这个问题。感谢

1 个答案:

答案 0 :(得分:3)

您可以使用re.search()获取所需的子字符串,然后将所有+替换为str.replace()的空格:

re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
  • re.search(r'/&q=([^&]*)', url).group(1)获得所需的部分,replace('+', ' ')执行重播

示例:

In [56]: url
Out[56]: 'https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed'

In [57]: re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
Out[57]: 'To Be Parsed out'

如果没有匹配项,请抓住AttributeError引发的re.search.group()例外情况,例如:

try:
    out = re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
except AttributeError:
    ## No match, do what you want