在request.get python中传递逗号分隔值

时间:2015-08-31 14:27:42

标签: python python-requests web.py

您好,我正在尝试阅读一个安静的api

    self.opponent_movefourImages = []
    for i in range(15):   #needs to be 15 
        imgName = "opponentImages/opponent_movefour-e000%d.png" % i
        tmpImage = pygame.image.load(imgName)
        tmpImage = tmpImage.convert()
        transColor = tmpImage.get_at((1, 1))
        tmpImage.set_colorkey(transColor)
        self.opponent_movefourImages.append(tmpImage)

我正在传递像这样的值

http://localhost:1010/productfamily?date=2015-08-28&list=abc,xyz

我没有得到想要的输出。如何以这种方式传递逗号分隔的字符串?

当我像这样传递它时,它会起作用

url = 'http://localhost:1010/productfamily'
sdate = '2015-08-28'
plist = 'abc,xyz'
params = (('date', sdate ), ('list', plist))
requests.get(url, params)

3 个答案:

答案 0 :(得分:2)

问题在于你如何指定你的params,以及你如何传递它们。试试这个:

url = 'http://localhost:1010/productfamily'
sdate = '2015-08-28'
plist = 'abc,xyz'
params = {
  'date': sdate,
  'list': plist
 }
requests.get(url, params = params)

答案 1 :(得分:2)

要为同一个密钥传递多个值,请传入一个dict,其中包含一个可迭代的值

url = 'http://localhost:1010/productfamily'
params = {'sdate': '2015-08-28'}
params['plist'] = ('abc', 'xy')
requests.get(url, params)

修改

OP确实要求使用逗号分隔值列表,并且在注释中指出somewhatoff,此代码会生成多个key = value参数。话虽如此,OP还表示他们正在从API“读取”并发出GET请求,表明这不是他们正在创建的服务。虽然有关于如何提供多个值的 NO 规范,但我的经验是“大多数”服务器框架将接受这种格式的多个值,而且我还没有看到“在野外”需要的CSV格式。“

维基百科支持这一立场:https://en.wikipedia.org/wiki/Query_string#Web_forms

有关特定Web服务器行为的详细信息,请参阅此答案:https://stackoverflow.com/a/1746566/4075135

答案 2 :(得分:-1)

你需要将字典作为params而不是元组列表传递。

params = {
      'date': sdate,
      'list': plist,
     }

requests.get(url, params)