使用函数填充post请求的“data”部分

时间:2014-10-04 03:25:46

标签: python python-3.x urllib2 urllib

尝试填充"数据" python中urllib请求的一部分,包含列表中的值和一些格式。

说我有一个像[1492, 1493, 1493, ...]

这样的列表

我希望将这两个值纳入以下内容:

data = ({
    'c_id': '458',
    'state': 'live',
    'spec_ids[]': '1492',
    'spec_ids[]': '1493',
    'spec_ids[]': '1494',
    'spec_ids[]': '...',
    'allow_undo': 'true',
    'flash': 'False'
    })

并且必须采用'spec_ids[]': '####'

的格式

最简单/最好的方法是什么?

我希望解决方案具有可扩展性,以便随着列表变长,它会继续为提交的数据添加值。

感谢任何和所有帮助。我真的被困在这里并尝试了许多不同的事情。

1 个答案:

答案 0 :(得分:2)

字典不能有重复的值,但urllib.urlencode接受任何可迭代的对象,因此我们可以使用列表来实现我们需要的功能。

import urllib

data = [
    ('c_id', '458'),
    ('state', 'live'),
    ('flash', 'False')
] + [ ('spec_ids[]',str(x)) for x in [1492, 1493, 1493] ]

print urllib.urlopen("http://stackoverflow.com/",urllib.urlencode(data)).read()

这使用列表生成器从我们的数据列表中创建'spec_ids[]'字段。请注意,由于使用了urlopen的数据参数,这将是一个POST请求。