2016-06-16 8 views
1

私はurlencodeに関する質問があります。ここでは一例です:だからurllib.urlencodeを一重引用符ではなく二重引用符で囲みます。

​​

、私はこれを取得:

examresult=%7B%27spendTime%27%3A+911%2C+%27choice%27%3A+%5B%5B1593%2C+%5B0%5D%2C+False%2C+783%5D%2C+%5B1591%2C+%5B2%5D%2C+False%2C+2%5D%5D%7D&submit=true&summary=%7B%27wrong%27%3A+2%2C+%27correct%27%3A+0%7D&taskid=10&action=task_exam_save_result&examid=5 

その後、私はURLデコードのためのhttp://tool.chinaz.com/tools/urlencode.aspxに上記の文字列をコピーし、この取得:だから

examresult={'spendTime': 911, 'choice': [[1593, [0], false, 783], 
[1591, [2], false, 2]]}&submit=true&summary={'wrong': 2, 'correct': 
0}&taskid=10&action=task_exam_save_result&examid=5 

を、すべての二重引用符は一重引用符になります。どうして?

デコードされた文字列を他のプログラミング言語に転送する必要があるため、二重引用符を使用します。 JavaとObjective Cを解析し、その文字列には二重引用符が必要です。

どうすればよいですか?

+3

urllib.urlencodeの引数は、無効なdictであるため、訂正してください。 '、" t2]、False、2]]、 "spendTime" '正しいことを提案します;-) PS:あなたは最初の結果を得るのではなく、代わりに' SyntaxError:これは最初の無効な文字であるため、spendTimeの断片をスニペットします。 – Dilettant

+1

Pythonは、dictリテラルで '' 'を使用しても、その情報はdictの一部として保存されません。 '{'a'、 'c'、 't'、 'i'、 'o'、 'n'}): 'task ...'}'は同じ結果を返します。 – deceze

答えて

3

私はurlencode hereを使用しますが、json.dumps()を使用してJSONに変換し、URLで使用するため、それを安全にするためにurlencodeまたはb64encodeを使用していないだろう。

+0

json.dumpsは文字列を取得します。だから、その後のurlencodeはPythonのurllib.urlencodeであってはいけません。これは、文字列を引数として受け入れないのですか? – Wesley

+0

あなたは 'examresult'パラメータに文字列を渡したいので、' urllib.urlencode({'examResult':json.dumps({...})}) ' – Jieter

+0

を使うことができます。答えとして受け入れる。どうも。 – Wesley

0

引用符は、文字列

それはあなたが使用して引用するのはあなた次第です、それはそれが使用する引用のPython次第ですの一部ではありません。

>>> 'asdf' 
'asdf' 
>>> "asdf" 
'asdf' 
>>> "as'df" 
"as'df" 
関連する問題