我用python(3.10)编写了一个python程序,它使用CSV模块获得一些名为“货币”、“飞行”、“出租车”和“健身房”的特定列,还有更多。这个程序所做的就是检查单元格“货币”中的值是否等于一种设定的货币(如美元或摩擦),然后从该货币中将以下单元格转换为美元。它通过API GET请求(使用fixer )执行此转换,如下所示:
from_CAD_USD = f"https://api.apilayer.com/fixer/convert?to=USD&from=CAD&amount={flight}"
response = requests.request("GET", from_CAD_USD, headers=headers, data=payload)
status_code = response.status_code
result = response.json()
value = result["result"]这个特定的请求是接受变量“for”,并将其从"CAD“转换为”美元“。我的问题是,我是否需要对我想要转换的所有货币进行这种get请求,然后为其他列编写相同的请求?因为,正如现在所写的,我需要这样做:
CAD to USD for flights column
CAD to USD for taxi column #as taxis is a different value than flight being passed into amount
CAD to USD for gym column因此,这只是一种货币转换,但现在我需要为RUB货币和MXN currency...etc编写相同的代码,因为它目前只支持4行的航班转换功能,每次运行程序时都需要它的12 get请求。那似乎太过分了。但我是个新手,所以我以前从来没有处理过这样的事情。有更好的办法吗?我考虑的不是一遍又一遍地从get请求进行转换,我可以得到一个get请求,假设当前从CAD到美元的汇率为1美元(1美元= .77CAD),得到20种货币类型的值(那么应该只有20个请求吗?)然后使用这些值与单元格中的数量相乘,有效地进行转换。
我希望API处理转换而不是做某种浮点乘法的原因是,在过去,我得到了不准确的四舍五入,并且在转换过程中丢失了多达9美元。任何有关如何更好地管理API请求的信息都将受到极大的赞赏。谢谢社区!
发布于 2022-09-10 18:45:39
有一个选项,也可能是我要选择的选项,是使用/latest API端点来获取汇率,然后自己进行转换计算。使用API的/latest端点,您可以在一个get请求中获得从单一货币到所有其他货币的汇率。
然后,您可以使用转换端点来测试一些结果,以确保它们正确匹配。
另一种选择是继续按照当前的方式进行缓存或回忆录,这样您就可以知道自己不会发出重复的请求。
这是一个让CAD达到美元汇率的例子,以及其他一些例子。
url = "https://api.apilayer.com/fixer/latest"
params = {"symbols":["USD", "MXN", "RUB"], "base": "CAD"}
payload = {}
headers= {
"apikey": "{API-KEY}"
}
response = requests.get(url,headers=headers,params=params,payload=payload)
result = response.json()
from_CAD_USD = result["rates"]["USD"]如果每个值都应该与convert端点的输出100%相同。那么这个策略可能不是更好的选择。
https://stackoverflow.com/questions/73674288
复制相似问题