2014-05-22 57 views
0

我试图与路径列表做的寻找,如:替换导致与Python分裂法值

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

什么是您预期的输出? –

+0

我期待将所有拆分字符串添加到字典中(正如我开始所做的那样)在最后一行 – CodeTalk

回答

1

不知道,如果你必须只涉及分割方法,它不能参与任何其他字符串替换方法或正则表达式。无论如何,这是做它不使用任何正则表达式或字符串替换方法的一种方式:

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']} 
+0

要回答你的问题 - 我宁愿用split方法来做,除非有更好的表现方式来做到这一点?你可以修改你的答案,把'out'值附加到字典中(正如我已经开始做的那样) - 真的很感激@Marcin。 – CodeTalk

+0

@CodeTalk你的'dictpath'是一个列表,而不是一个字典。我修改了字典的代码,即''dictpath = {}'。 – Marcin

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']} 

那么你可以替换值只是通过解决字典键

+0

我已经研究过这个问题,但是这似乎没有必要,因为我已经从数据库获得了这个路径。我很欣赏答案,虽然 – CodeTalk