我试图在提交之前urlencode这个字符串。
queryString = 'eventName=' + evt.fields["eventName"] + '&' + 'eventDescription=' + evt.fields["eventDescription"];
我试图在提交之前urlencode这个字符串。
queryString = 'eventName=' + evt.fields["eventName"] + '&' + 'eventDescription=' + evt.fields["eventDescription"];
当前回答
注意urllib。Urlencode并不总是能做到这一点。问题在于,有些服务关心参数的顺序,而在创建字典时,这些顺序就会丢失。对于这种情况,使用urllib。正如Ricky建议的那样,quote_plus更好。
其他回答
供以后参考(例如:For python3)
>>> import urllib.request as req
>>> query = 'eventName=theEvent&eventDescription=testDesc'
>>> req.pathname2url(query)
>>> 'eventName%3DtheEvent%26eventDescription%3DtestDesc'
尝试请求而不是urllib,你不需要打扰urlencode!
import requests
requests.get('http://youraddress.com', params=evt.fields)
编辑:
如果你需要有序的名称-值对或多个名称值,那么设置参数如下:
params=[('name1','value11'), ('name1','value12'), ('name2','value21'), ...]
而不是用字典。
Python 2
你要找的是urllib.quote_plus:
safe_string = urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')
#Value: 'string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24'
Python 3
在Python 3中,urllib包被分解成更小的组件。您将使用urllib.parse。Quote_plus(注意解析子模块)
import urllib.parse
safe_string = urllib.parse.quote_plus(...)
在Python 3中,这对我来说很有效
import urllib
urllib.parse.quote(query)
注意urllib。Urlencode并不总是能做到这一点。问题在于,有些服务关心参数的顺序,而在创建字典时,这些顺序就会丢失。对于这种情况,使用urllib。正如Ricky建议的那样,quote_plus更好。