动态将值插入API请求吗?

时间:2018-11-02 15:48:11

标签: python-3.x

我正在编写一个API请求,以查询OpenWeatherMap的API以获取天气数据。我正在使用city_id编号提交对世界上唯一地方的请求。成功的API查询如下所示:

    r = requests.get('http://api.openweathermap.org/data/2.5/group?APPID=333de4e909a5ffe9bfa46f0f89cad105&id=4456703&units=imperial')

其中的关键部分是4456703,这是唯一的city_ID

我希望用户选择一些城市,然后再通过JSON文件查找city_ID,然后将city_ID提供给API请求。

我可以通过硬编码添加多个city_ID。我还可以将city_ID添加为变量。但是我不知道如果用户选择一个随机的城市(最多20个),如何将其插入API请求中。我试图通过类似...的多次迭代来添加列表和元组。

#assume the user already chose 3 cities, city_ids are below
city_ids = [763942, 539671, 334596]

r = requests.get(f'http://api.openweathermap.org/data/2.5/groupAPPID=333de4e909a5ffe9bfa46f0f89cad105&id={city_ids}&units=imperial')

也许列表不是正确的数据类型?

成功的代码看起来像...

r = requests.get(f'http://api.openweathermap.org/data/2.5/group?APPID=333de4e909a5ffe9bfa46f0f89cad105&id={city_id1},{city_id2},{city_id3}&units=imperial')

除了我之前说过的那样,用户可以选择3个城市或10个城市,以便部分必须动态更新。

1 个答案:

答案 0 :(得分:1)

您可以使用一些字符串方法和列表推导将列表的所有变量附加​​到单个字符串,然后将其格式化为API字符串,如下所示:

2 3 7
-1
5 4
1 8

希望有帮助, 祝你好运