Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        3个月前关闭。
                                                                                            
                
        
我想知道如何在以下API调用中使用变量:

 response=requests.get('https://api.darksky.net/forecast/f3bc3bd870812cc013666f2bfb75b45d/50,1,2019-11-18T22:05:45+00:00')


而不是本例中的随机值50和1,我想将变量的纬度和经度放在一个for循环中。当我尝试此操作不起作用时,发生400错误。是语法错误还是不可能?我阅读了此API的整个documentation,没有任何迹象表明这是不可能的。

[EDIT]尝试的示例:

for i in range(0,precision):


    response=requests.get('https://api.darksky.net/forecast/f3bc3bd870812cc013666f2bfb75b45d/latitude[i],longitude[i],2019-11-18T22:05:45+00:00')
    json_data = json.loads(response.text)

    wind_speed[i]=json_data["currently"]["windSpeed"]
    wind_dir[i]=json_data["currently"]["windBearing"]


在此示例中,对于i = 0,纬度[i] = 51.4888,经度[i] =-3.16657

这是错误消息


  File "C:/Users/ab79/Documents/GPX WEATHER/test.py", line 8, in <module>
    print(json_data["currently"]["windSpeed"])

KeyError: 'currently'

最佳答案

我会做这样的事情:

base_url = 'https://api.darksky.net/forecast/f3bc3bd870812cc013666f2bfb75b45d/{},{},2019-11-18T22:05:45+00:00'
url = base_url.format(latitude[i],longitude[i])
r = requests.get(url)

data = r.json()


您正遇到问题,因为您试图将变量直接注入url字符串。尝试使用.format()(上方)或f-string,如下所示:

url = f'https://api.darksky.net/forecast/f3bc3bd870812cc013666f2bfb75b45d/{latitude[i]},{longitude[i]},2019-11-18T22:05:45+00:00'
r = requests.get(url)
data = r.json()

关于python - 在Python的API请求中使用变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58944189/

10-12 00:42
查看更多