【问题标题】:Python - Do math from url parametersPython - 从 url 参数做数学
【发布时间】:2016-04-13 05:40:53
【问题描述】:

我的目标很简单:

网址类似于:/add?a=1&b=2

我的函数应该获取这些参数的值并简单地进行加法。但是,我实际上坚持如何做到这一点。这是我的 add 函数的全部内容:

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

所以如果 /add?a=1&b=2 它应该返回:

{"c": 3}

不是

{"c": 1}

【问题讨论】:

  • 是否保证查询参数为ab(结果为c)?您是否需要自己解析 url(stdlib 有很多工具可以让这变得非常简单),或者您正在使用一个框架来为您处理这个问题?
  • 是的,a & b 将始终是参数,结果应该存储在 c 中。我使用的框架是 web2py

标签: python json parsing url


【解决方案1】:

你没有把问题描述清楚:

您是否只是想要一个解析函数从 url 字符串中提取参数并进行数学运算;

或者想向这个 url 发出请求并得到结果作为响应。

正如你在评论中提到的 web2py,那么它应该是第二个。我没有 web2py 经验,但我认为它可能与 flask 类似。

以 Flask 为例。您需要为/add 添加一个处理程序。我将忽略导入。

@app.route('/add')
def add():
    a, b = request.args['a'], request.args['b']
    c = a + b
    return json.dumps({'c': c})

【讨论】:

    【解决方案2】:

    Python 的内置 urllib.parse 支持解析 URL 本身。然后,您可以使用json.dumps 以该格式输出它。

    from urllib.parse import parse_qs, splitquery
    from json import dumps
    
    def add(url):
        data = parse_qs(splitquery(url)[1])
        a = int(data['a'][0])
        b = int(data['b'][0])
        c = a + b
        return dumps({'c': c})
    
    add("/add?a=1&b=2")
    # '{"c": 3}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 2018-05-31
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      相关资源
      最近更新 更多