当前位置: 首页 > 知识库问答 >
问题:

urlencode一个值数组

卜存
2023-03-14

我正在尝试使用urllib.urlencode对python中的词典进行urlencode编码。问题是,我必须对数组进行编码。

结果必须是:

criterias%5B%5D=member&criterias%5B%5D=issue
#unquoted: criterias[]=member&criterias[]=issue

但我得到的结果是:

criterias=%5B%27member%27%2C+%27issue%27%5D
#unquoted: criterias=['member',+'issue']

我试过几种方法,但似乎没有得到正确的结果。

import urllib
criterias = ['member', 'issue']
params = {
    'criterias[]': criterias,
}
print urllib.urlencode(params)

如果我使用cgi.parse_qs对正确的查询字符串进行解码,结果如下:

{'criterias[]': ['member', 'issue']}

但是如果我对结果进行编码,我会得到一个错误的结果。有没有办法产生预期的结果?

共有3个答案

靳茂
2023-03-14

要将其抽象出来以用于任何参数字典并将其转换为元组列表:

import urllib

def url_encode_params(params={}):
    if not isinstance(params, dict): 
        raise Exception("You must pass in a dictionary!")
    params_list = []
    for k,v in params.items():
        if isinstance(v, list): params_list.extend([(k, x) for x in v])
        else: params_list.append((k, v))
    return urllib.urlencode(params_list)

对于上面的示例以及使用一些字符串和数组作为值的字典,现在都可以使用:

criterias = ['member', 'issue']
params = {
    'criterias[]': criterias,
}
url_encode_params(params)
>>'criterias%5B%5D=member&criterias%5B%5D=issue' 
束研
2023-03-14

可以使用键值对(元组)列表:

>>> urllib.urlencode([('criterias[]', 'member'), ('criterias[]', 'issue')])
'criterias%5B%5D=member&criterias%5B%5D=issue'
马臻
2023-03-14

解决方案比上面列出的要简单得多。

>>> import urllib
>>> params = {'criterias[]': ['member', 'issue']}
>>> 
>>> print urllib.urlencode(params, True)
criterias%5B%5D=member&criterias%5B%5D=issue

请注意真实情况。看见http://docs.python.org/library/urllib.html#urllib.urlencode doseq变量。

附带说明的是,它不需要[]就可以作为数组使用(这就是为什么urllib不包含它)。这意味着您不需要将[]添加到所有数组键中。

 类似资料:
  • 问题内容: 如果要使用变量创建URL,则有两种选择来编码字符串。和。 到底有什么区别,哪个是首选? 问题答案: 这将取决于您的目的。如果与其他系统的互操作性很重要,那么rawurlencode似乎是可行的方法。一个例外是传统系统,该系统希望查询字符串遵循以+而不是%20编码的空格的表单编码样式(在这种情况下,您需要urlencode)。 rawurlencode 遵循PHP 5.3.0之前的RFC

  • 我是新的java.here是我的代码。我确定我的字符串数组大小与nextint metod使用扫描仪。然后我添加了字符串与nextline metod.它似乎对我是正确的,但我不能看到我的第一个值的数组.这是什么问题在这个代码。

  • 本文向大家介绍php自定义urlencode,urldecode函数实例,包括了php自定义urlencode,urldecode函数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php自定义urlencode,urldecode函数。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍用JavaScript实现PHP的urlencode与urldecode函数,包括了用JavaScript实现PHP的urlencode与urldecode函数的使用技巧和注意事项,需要的朋友参考一下 很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode

  • 我想将表单域映射到数据库域。 我有两个数组。。 一个数组是数据,包含作为键的表单字段id和作为值的表单字段值。 我还有一个数组,打算用作地图。此数组的键与表单字段相同,值为数据库字段名。 我想做的是遍历数据数组,在数据键与映射键匹配的地方,给数据数组分配一个新的键,这个键就是映射数组的值。 我的问题是怎么做?我尝试了很多不同的方法,现在我完全迷失在其中。