2024-04-25 08:14:31 发布
网友
我有这样一根线:
param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl
我想从上面的字符串中删除任何参数,用户将输入如下参数名称
param1、param2等
根据这一点,应该从上面的字符串中删除整个参数及其值
例如,如果用户想要删除param3,结果字符串应该如下所示
param1=1234¶m2=abcd¶m4=ijkl
提前谢谢
这样行吗
>>> import re >>> def removeparam(query, name): ... return re.sub(name + r'=[^&]*(&|$)', '', query).rstrip('&') ... >>> removeparam('param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl', 'param3') 'param1=1234¶m2=abcd¶m4=ijkl'
我对第一个和最后一个参数都进行了测试,与其他一些建议的解决方案相比,这两个参数的性能似乎都很好
如果要同时删除多个参数,请将它们放入列表中,然后可以执行以下操作:
>>> import functools >>> unwanted = ['param4', 'param1', 'param3'] >>> functools.reduce(removeparam, unwanted, ... 'param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl') ... 'param2=abcd'
只剩下一个参数没有被删除
使用re.sub():
re.sub()
import re >>> qs = "param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl" >>> omit = "param3" >>> re.sub(r'%s=[^&]+&'%omit,'',qs) 'param1=1234¶m2=abcd¶m4=ijkl'
>>> import re >>> qs = "param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl" >>> name = "param2" >>> rx = '(^|&)' + name + '=[^&]*' >>> re.sub(rx, '', qs) 'param1=1234¶m3=efgh¶m4=ijkl'
不过,在处理查询字符串时最好使用专用函数:
>>> import urllib, urlparse >>> qs = "param1=1234¶m2=abcd¶m3=efgh¶m4=ijkl" >>> qry = urlparse.parse_qs(qs) >>> del qry['param2'] >>> urllib.urlencode(qry, True) 'param4=ijkl¶m3=efgh¶m1=1234'
这样行吗
我对第一个和最后一个参数都进行了测试,与其他一些建议的解决方案相比,这两个参数的性能似乎都很好
如果要同时删除多个参数,请将它们放入列表中,然后可以执行以下操作:
只剩下一个参数没有被删除
使用
re.sub()
:不过,在处理查询字符串时最好使用专用函数:
相关问题 更多 >
编程相关推荐