用python split方法替换结果值

时间:2014-05-22 23:04:11

标签: python split

我正在尝试使用路径列表看起来像:

['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)

我的代码有点存在,但我有点困惑如何将等号后的字符串拆分为评论。

非常感谢任何帮助。

谢谢。

2 个答案:

答案 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键来替换值