在使用python';s urllib.urlencode()?
我有一个字典,我想把它编码为查询参数。 我正在访问的服务器希望查询如下所示:在使用python';s urllib.urlencode()?,python,urllib,urlencode,Python,Urllib,Urlencode,我有一个字典,我想把它编码为查询参数。 我正在访问的服务器希望查询如下所示:http://www.example.com?A=B,C 但是当我尝试使用urllib.urlencode构建URL时,我发现逗号变成了%2C: >>> import urllib >>> urllib.urlencode({"A":"B,C"}) 'A=B%2CC' 是否有任何方法可以转义逗号,以便urlencode将其视为普通字符 如果没有,我如何解决这个问题?您可以通过将某些字
http://www.example.com?A=B,C
但是当我尝试使用urllib.urlencode
构建URL时,我发现逗号变成了%2C
:
>>> import urllib
>>> urllib.urlencode({"A":"B,C"})
'A=B%2CC'
是否有任何方法可以转义逗号,以便urlencode
将其视为普通字符
如果没有,我如何解决这个问题?您可以通过将某些字符显式指定为安全参数值来转义它们
urllib.quote(str, safe='~()*!.\'')
更多信息:通过将某些字符明确指定为安全参数值,可以对其进行转义
urllib.quote(str, safe='~()*!.\'')
更多信息:您可以通过在点击端点之前将
查询参数添加为字符串来完成此操作
我使用了请求
来提出请求
例如:
GET请求
导入请求
url=”https://www.example.com/?"
query=“A=B,C”
url\u final=url+query
url=requests.get(url\u final)
打印(url.url)
# https://www.example.com/?A=BC
逗号(以及其他一些字符)在中定义为保留字符。这意味着逗号在URL的各个部分都有定义的含义,如果没有在该上下文中使用,则需要对其进行百分比编码
也就是说,没有给逗号任何特殊语法,所以在查询参数中,我们可能不应该对其进行编码。这就是说,这并不完全是请求的错:参数是使用进行编码的,这就是对查询参数进行百分比编码的原因
但这并不容易解决,因为有些web服务使用,
,有些使用%2C
,两者都没有错。您可能只需要自己处理这种编码。您可以在点击端点之前将查询参数作为字符串添加
我使用了请求
来提出请求
例如:
GET请求
导入请求
url=”https://www.example.com/?"
query=“A=B,C”
url\u final=url+query
url=requests.get(url\u final)
打印(url.url)
# https://www.example.com/?A=BC
逗号(以及其他一些字符)在中定义为保留字符。这意味着逗号在URL的各个部分都有定义的含义,如果没有在该上下文中使用,则需要对其进行百分比编码
也就是说,没有给逗号任何特殊语法,所以在查询参数中,我们可能不应该对其进行编码。这就是说,这并不完全是请求的错:参数是使用进行编码的,这就是对查询参数进行百分比编码的原因
但这并不容易解决,因为有些web服务使用,
,有些使用%2C
,两者都没有错。您可能需要自己处理这种编码。在我的例子中,str
的值应该是多少urllib.quote(urllib.urlencode({“A”:“B,C”}),safe=',')
没有给出正确的答案。另外,urllib.urlencode({“A”:urllib.quote(“B,C,safe=',”)}
没有给出正确的答案。所以我不知道你的答案是什么意思,也不知道如何使用它。请澄清。我的错,在Py2中编码字典时不能转义字符,尽管在Py3中可以使用丑陋的hackstr.replace(“%2C”,“,”)
,但是,urllib.parse.urlencode({“hello”:“w,b”},safe=“,”
在我的情况下,strurllib.quote(urllib.urlencode({“A”:“B,C”}),safe=',')
没有给出正确的答案。另外,urllib.urlencode({“A”:urllib.quote(“B,C,safe=',”)}
没有给出正确的答案。所以我不知道你的答案是什么意思,也不知道如何使用它。请澄清。我的错,在Py2中编码字典时不能转义字符,尽管在Py3中可以使用丑陋的hackstr.replace(“%2C”,“,”)
,但是,urllib.parse.urlencode({“hello”:“w,b”},safe=“,”