我想获取一个包含美元汇率的列表。
这将显示API内的数据以供参考。
def ge(url):
response = urllib.request.urlopen(url)
content_str = response.read()
content = json.loads(content_str)
return json.dumps(content)
print (ge(url))
我在代码的这一部分遇到了麻烦,无法获得美元的汇率。我的另一个问题是,当我摆脱'base in i'
时,收到一条错误消息,内容如下:“字符串索引必须是整数”。
import json
import urllib.request
url = "https://api.exchangeratesapi.io/latest"
def get_response(url):
response = urllib.request.urlopen(url)
content_str = response.read()
content = json.loads(content_str)
outList = []
for i in content:
if('rates' in i and 'base' in i):
innerList = []
innerList.append(float(i["USD"]))
outList.append(innerList)
return json.dumps(outList)
print (get_response(url))
预计:1.1218
实际结果:我不断收到一个空括号,里面什么也没有。
答案 0 :(得分:2)
urllib
GET请求仅返回字典。我们看到它包含三个键:base
(其值为'EUR'),rates
(其值为包含其他货币换算汇率的字典)和date
(其值是当前日期)。您想获得美元的兑换率。因此,我们使用rates
访问content['rates']
键。这将返回一个字典,其键为货币名称(“ GBP”,“ USD”等),其值是等于基数1的货币金额。要访问USD
条目的值,我们执行content['rates']['USD']
,它返回1.1218
美元兑欧元的期望结果。这些是python的基本概念,因此在进行更高级的项目之前,请务必先了解它们。
修改后的代码:
def get_response(url):
response = urllib.request.urlopen(url)
content_str = response.read()
content = json.loads(content_str)
return content['rates']['USD']
答案 1 :(得分:1)
提示:您可以在print(content)
行之后添加content=json.loads(content_str)
,然后您可以看到content
的类型,它是嵌套的Dictionary
。
@ 101arrowZ的代码效果很好。我们不需要检查键rates
和base
是否在字典中,因为{check}部分包含在content['rates']['USD']
中。如果它们在content
中,则可能返回该值;否则,不返回任何内容。