从self var python获取正确的输出

时间:2014-05-29 13:08:31

标签: python oop

我想做的事情: 以我仍然可以在另一种方法中使用的方式输出self.out var的值。

代码

if self.path_object is not None:
    dictpath = {}
    for path in self.path_object:
        parsed = urlparse(path.pathToScan)
        if parsed.query:
            self.params = parsed.query.split('&', 2)
            self.out = list(map(lambda v: v.split("=")[0] +"=" + str(self.fooz), self.params))
            dictpath[parsed.geturl()] = self.out
    print dictpath

此代码引入一组路径(通过path_object),然后在&符号上解析这些路径并将self.fooz的值附加到其上,然后将其放入字典并输出结果。

结果 它目前输出一个列表(增加间距以便于阅读):

{
u'www.somesite.com/param.php?id=317':
    u'id=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]', 

u'somesite.com/param.php?id=911&param2=6&param3=cat': 
    [u'id=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]', 
    u'param2=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]', 
    u'param3=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]']
}

我的问题是,如何在另一种方法中访问此输出,以便我可以遍历每个参数,如:

u'somesite.com/param.php?id=<<<<<self.fooz>>>>>&param2=6&param3=cat': 

然后

u'somesite.com/param.php?id=911&param2=<<<<<self.fooz>>>>>&param3=cat

,然后对路径中的每个参数执行此操作。

所以,我尝试从当前输出请求网址,但requests不允许像<self.fooz>那样请求路径,因为它不是有效网址(例如包含某个网站) .com或http://somesite.com)。

非常感谢任何帮助。

非常感谢你!

1 个答案:

答案 0 :(得分:1)

你必须再次解析字符串。使用urlparse.parse_qshttps://docs.python.org/2/library/urlparse.html)。这样做:

import urlparse
s = u'somesite.com/param.php?id=911&param2=<<<<<self.fooz>>>>>&param3=cat'
params = urlparse.parse_qs(s[s.find('?') + 1:])
print params

结果是:

{u'param3': [u'cat'], u'id': [u'911'], u'param2': [u'<<<<<self.fooz>>>>>']}

现在您可以迭代params