将URL查询字符串传递给要添加的函数

时间:2016-04-12 03:51:11

标签: python

我如何从URL,a和b中获取值,然后将它们传递给add函数?结果应该是:{"c": x},其中x是a和b的总和。

代码:

op = 'add'
a = random.randint(0,10)
b = random.randint(0,10)
/%s?a=%s&b=%s' % (op, a, b)

result = res.json()

if op=='add':
    assert a+b == result['c']

功能:

def add():
    import json
    return json.dumps({'c': ???})

3 个答案:

答案 0 :(得分:1)

使用urlparse,这是为这些任务设计的标准库模块!

  

urlparse.parse_qs(qs [,keep_blank_values [,strict_parsing]])

     

解析作为字符串参数给出的查询字符串(类型的数据)   应用程序/ x-WWW窗体-urlencoded)。数据作为字典返回。   字典键是唯一的查询变量名称和值   是每个名称的值列表。

     

可选参数keep_blank_values是一个指示是否的标志   百分比编码查询中的空白值应视为空白   字符串。真值表示空格应保留为   空白字符串。默认的false值表示空值   被忽视并被视为不包括在内。

     

可选参数strict_parsing是一个标志,指示要执行的操作   解析错误。如果为false(默认值),则错误是静默的   忽略。如果为true,则错误会引发ValueError异常。

示例:

>>> urlparse.parse_qs('a=1&b=1') # raw query string
{'a': ['1'], 'b': ['1']}

请注意,您也可以使用urlparse中的其他函数将整个URL解析为其组件(包括查询字符串)。

答案 1 :(得分:0)

from urlparse import parse_qs, urlparse
import json

def add(a, b):
    return json.dumps({'c': a+b})

url = 'add?a=1&b=1'

q_dict = parse_qs(urlparse(url).query, keep_blank_values=True)
# q_dict = {'a': ['1'], 'b': ['1']}

print add(a=q_dict['a'][0], b=q_dict['b'][0])

答案 2 :(得分:0)

我想出了如何解决我的问题!我感谢所有的帮助,但这里提供的解决方案都没有适用于我的问题。这完全是我的错,因为我的问题完全不同。