我正在尝试使用路径列表看起来像:
['path/to/somewhere?id=6&name=Test', 'path/to/list?date=05222014&type=cal']
我的puesdocode:
for each path with parameters:
split path on character ? and &
replace value after "=" with a value from self.fuzz_vectors
我目前的代码:
def parse_paths(self):
dictpath = []
if self.path_object is not None:
for path in self.path_object:
self.params = path.split("?")[1].split("&") #split value after ? and after &
#replace splitted string after '=' sign with self.value_path
dictpath.append(self.params)
我的代码有点存在,但我有点困惑如何将等号后的字符串拆分为评论。
非常感谢任何帮助。
谢谢。
答案 0 :(得分:1)
不确定它是否必须仅包含split方法,并且它不能涉及任何其他字符串替换方法或正则表达式。无论如何,这是一种不使用任何正则表达式或字符串替换方法的方法:
st = ['path/to/somewhere?id=6&name=Test', 'path/to/list?date=05222014&type=cal']
dictpath = {}
for path in st:
params = path.split("?")[1].split("&")
out = list(map(lambda v: v.split("=")[0] +"=" + fuzz_vectors, params))
dictpath[path] = out
print(dictpath)
给出:
{'path/to/list?date=05222014&type=cal': ['date=some_string', 'type=some_string'], 'path/to/somewhere?id=6&name=Test': ['id=some_string', 'name=some_string']}
答案 1 :(得分:0)
您可能需要查看urlparse
模块:
>>> import urlparse
>>> print urlparse.parse_qs('path/to/somewhere?id=6&name=Test'.split('?')[1])
{'id': ['6'], 'name': ['Test']}
>>> print urlparse.parse_qs('path/to/list?date=05222014&type=cal'.split('?')[1])
{'date': ['05222014'], 'type': ['cal']}
然后你可以通过寻址dict键来替换值