如何在python中删除url的一部分?

时间:2014-11-15 08:40:19

标签: python regex

我有一个网址列表,这些网址在&符号后最后有不同的数字。我无法应用正则表达式从网址中删除这些数字(包括&),因为有多个&在字符串中,re.sub('&\d*',"",x)命令会过滤所有&,包括我要删除的内容。

网址为:http://helloworld.com?p1=123&p2=987&hello=world&123456

我想要的输出是:http://helloworld.com?p1=123&p2=987&hello=world

2 个答案:

答案 0 :(得分:3)

如果您总是想要最后一个参数,则可以使用锚定模式:

re.sub(r'&\d+$',"",x)

重要的一块是美元符号,表示最后只匹配。

另外,您应该记住,每当您使用*时,可以匹配空字符串。如果要匹配非空字符串,则需要使用+

答案 1 :(得分:2)

+之后您需要\d才能进行匹配!使用&\d*时,它首先匹配中间&。此外,您需要$来指定您的模式位于字符串的末尾:

'http:\\helloworld.com?p1=123&p2=987&hello=world&123456'
                             ^

所以请使用re.sub(r'(&\d+)$',"",x)而不是你的!请参阅DEMO