python请求库将逗号分隔的id作为参数传递

2024-10-03 04:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python请求库查询API

这是使用内部API

我有这个可以用的

ids=[24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760, 166787, 166788, 28666, 29792]
for i in ids:
    args={'segmentID': i}
    resp=requests.get('http://internal/api/segments?',params=args)

但我只想通过整个名单的身份证,这是允许的

http://internal/api/segments?segmentID=24381%2C+31883%2C++21145%2C+21143%2C+23010%2C+23016%2C+28066%2C+28163%2C+28673%2C+68665%2C+50750%2C+35268%2C+34943%2C+76377%2C+29760%2C+166787%2C+166788%2C+28666%2C+29792

这是正确的,但是我手动构建了它,如何在python中传递id

这行不通

ids=[24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760, 166787, 166788, 28666, 29792]
args={'segmentID': ids}
resp=requests.get('http://internal/api/segments?',params=args)

Tags: inapiidshttpforgetargsparams
2条回答

这是因为在for循环中发出请求时,它都是作为int,而不是作为列表。你知道吗

args={'segmentID': 24381}

但是当把它作为一个列表传递时,它的结果是

args={'segmentID': [24381, 31883]}

我想这可能有用

ids=24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760, 166787, 166788, 28666, 29792
args={'segmentID': ids}
resp=requests.get('http://internal/api/segments?',params=args)

尝试使用str.join

例如:

ids=[24381, 31883,  21145, 21143, 23010, 23016, 28066, 28163, 28673, 68665, 50750, 35268, 34943, 76377, 29760, 166787, 166788, 28666, 29792]

args={'segmentID': ",".join(str(i) for i in ids)}
resp=requests.get('http://internal/api/segments?',params=args)

注:%2C表示,

相关问题 更多 >