2016-04-12 25 views
0

URLから値を取得する方法と、bを追加してadd関数に渡す方法はありますか?結果は{"c": x}になるはずです。ここでxはaとbの和です。追加する関数にURLクエリ文字列を渡す

コード:

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': ???}) 
+0

[パスの二重スラッシュを正規化する] [URLパース]の可能な複製(http://stackoverflow.com/questions/8925938/url-parsing-in-python-normalizing-double-slash-in-paths) – Serdmanczyk

+0

ユーザは 'urlparse'について知りませんから、@ Serdmanczykはまったくありません... – icedwater

+1

申し訳ありませんが、重複した回答を見つけようとしていました。フラグを取り戻す方法はありますか?以下の答えは理にかなっています。 – Serdmanczyk

答えて

1

使用urlparse、これらのようなタスクのために設計された標準ライブラリモジュール!

urlparse.parse_qs([] strict_parsing、keep_blank_values [、] QS)

は(タイプのデータ アプリケーション/ x-www-form-urlencodedで)文字列引数として与えられたクエリ文字列を解析。データは辞書として返されます。 辞書キーは一意のクエリ変数名であり、値 は各名前の値の一覧です。

オプションの引数keep_blank_valuesは、パーセント符号化クエリの空白値を 文字列として扱うかどうかを示すフラグです。真の値は、ブランクが空文字列として として保持されるべきであることを示します。デフォルトのfalseの値は、空白の値が無視され、含まれていないかのように扱われることを示します( )。

オプション引数strict_parsingは、何をするかを示すフラグです。 の解析エラーがあります。 false(デフォルト)の場合、エラーは黙って が無視されます。 trueの場合、エラーによってValueError例外が発生します。

例:あなたが同様にurlparseに他の機能を使用して(クエリ文字列を含む)その成分にURL全体を解析することができます

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

注意。

+0

これはどのように使用できるのですか?これが一種の「私の宿題をする」問題かもしれないと感じたら、それを指摘しても構いませんが、回答は適切に行われなければなりません。 – icedwater

+1

@icedwaterあなたがコメントしたように私は右の例を追加していました。 :) –

+0

ありがとう!私はこれが答えを完全に与えずに良いヒントだと思う。 – icedwater

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]) 
0

問題を解決する方法を見つけました。私はすべての助けに感謝しますが、ここで提供される解決策のどれも私の質問に適用されません。私は全く別の質問をしたので、これはまったく私のせいです。

関連する問題