Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用python';s urllib.urlencode()?_Python_Urllib_Urlencode - Fatal编程技术网

在使用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中可以使用丑陋的hack
str.replace(“%2C”,“,”)
,但是,
urllib.parse.urlencode({“hello”:“w,b”},safe=“,”
在我的情况下,
str
urllib.quote(urllib.urlencode({“A”:“B,C”}),safe=',')
没有给出正确的答案。另外,
urllib.urlencode({“A”:urllib.quote(“B,C,safe=',”)}
没有给出正确的答案。所以我不知道你的答案是什么意思,也不知道如何使用它。请澄清。我的错,在Py2中编码字典时不能转义字符,尽管在Py3中可以使用丑陋的hack
str.replace(“%2C”,“,”)
,但是,
urllib.parse.urlencode({“hello”:“w,b”},safe=“,”