我正在尝试使用此简单的代码从网站读取数据,但是它给了我KeyError['p']
:
for i in range(25200):
time.sleep(1)
with requests.Session() as s:
data = {'current' : 'afghan_usd' }
r = s.get('http://call5.tgju.org/ajax.json?2019061716-20190617171520-I4OJ3OcWf4gtpzr3JNC5', json = data ).json()
#print(r)
for key, value in r["current"].items():
last_prices = (r[key]['p'])
z.append(last_prices)
mid.append(mean(z))
给定的r
如下:
{'current': {'afghan_usd': {'p': '154530', 'h': '157260', 'l':
'154530', 'd': '3640', 'dp': 2.36, 'dt': 'low', 't': '۱۷:۲۷:۰۳',
't_en': '17:27:03', 't-g': '۱۷:۲۷:۰۳', 'ts': '2019-06-17 17:27:03'}}
您可以在此处查看响应(r
)的全部内容:https://github.com/rezaee/coursera-test/issues/1
编辑:
我这样编辑代码:
for i in range(25200):
time.sleep(1)
with requests.Session() as s:
data = {'current' : 'afghan_usd' }#code}
r = s.get('http://call5.tgju.org/ajax.json?2019061716-20190617171520-I4OJ3OcWf4gtpzr3JNC5', json = data ).json()
#print(r)
for key, value in r["current"]["afghan_usd"].items():
last_prices = float(value.replace("," , ""))
z.append(last_prices)
mid.append(mean(z))
但是我收到了这个新错误:
AttributeError:“浮动”对象没有属性“替换”
答案 0 :(得分:2)
我认为您正在尝试遍历r["current"]
:
for key, value in r["current"].items():
# for first iteration:
# key is afghan_usd
# value is {'p': ....}
try:
price = value["p"]
except TypeError: # value is a string
price = value
last_prices = float(price.replace(',', ''))
z.append(last_prices)
mid.append(mean(z))
答案 1 :(得分:1)
一些建议:
在循环之前将其移动
with requests.Session() as s:
在该行之前
data = {'current' : 'afghan_usd' }
然后进行循环,并仔细检查您是否在正确的级别进行访问,如下所示:
last_prices = (r[key]['p'])
产生一个对象而不是简单的数据类型。
请确保在代码中正确缩进,因为它应该在外循环中
for key, value in r.items():
答案 2 :(得分:0)
您正在遍历r.items()
并从每个中检索“ p”。项目“当前”没有条目“ p”。