我正在尝试采用现有流程:
if self.path_object is not None:
dictpath = {}
for path in self.path_object:
self.params = path.pathval.split("?")[0]
self.params = path.pathval.split("&", 2)
if any(item in path.pathval for item in self.params):
out = list(map(lambda v: v.split("=")[0] +"=" + str(self.fuzz_vectors), self.params))
dictpath[path] = out
print dictpath
更新对于那些寻找使用split()
方法寻求帮助的人。我发现使用urlparse库更容易。感谢用户DarinDouglass指出这一点。
由于
答案 0 :(得分:1)
这是因为无论如何,您都要将path
分配给dictpath
。赋值将运行for循环的每次迭代。
要解决此问题,您可以将pass
更改为continue
或将dictpath[path] = out
移至if语句的true块中。后者是更好的选择,因为您可以删除else
语句。
编辑:你的if语句中发生了另一个问题。让我们分解吧。你的条件说的是:
self.params
中是否有可以在path.pathval
中找到的任何项目。 问题在于,这始终是True
,因为self.params
是path.pathval
的子集;也就是说,您从self.params
创建 path.pathval
。
这是一个显示我的意思的例子:
pathval = 'www.example.com/some_path/?param1=1¶m2=2'
# params = ['www.example.com/some_path/?param1=1', 'param2=2']
params = pathval.split('&', 2)
# Essentially says: is the string 'www.example.com/some_path...' in pathval? YES
if any(item in pathval for item in params)
# Add to dict
修复代码后,请随时将其发布到Code Review,因为我有一些更适用的语句。