【发布时间】:2020-08-04 10:14:06
【问题描述】:
我希望您希望循环遍历来自 yahoo Finance api 的结果,以返回公司名称和股票价格以获得最高收益者。
import requests
import pprint
url = "https://yahoo-finance15.p.rapidapi.com/api/yahoo/ga/topgainers"
querystring = {"start":"0"}
headers = {
'x-rapidapi-host': "yahoo-finance15.p.rapidapi.com",
'x-rapidapi-key': "9efd0f3e52mshd859f5daf34a429p11cb2ajsn2b0e421d681e"
}
response = requests.request("GET", url, headers=headers, params=querystring)
new_response = response.text
def new_stock(one_stock):
arranged = []
for items in (one_stock):
new_name = dict.get("regularMarketPrice")
result = arranged.append(one_stock)
return result
print(new_stock(new_response))
但它一直返回此错误
'File "monitor.py", line 27, in <module>
print(new_stock(new_response))
File "monitor.py", line 23, in new_stock
new_name = dict.get("regularMarketPrice")
TypeError: descriptor 'get' requires a 'dict' object but received a 'str'
【问题讨论】:
-
先见
print(response.text)。如果您期望 JSON 数据,那么您可能必须使用模块json将字符串转换为字典。或使用new_response = response.json() -
您还应该检查您在字典中得到的内容 - 您得到的是嵌套字典。如果值在
data["A"]["B"]["regularMarketPrice"]中,则无法直接使用.get("regularMarketPrice")获取,但必须使用["A"]["B"]["regularMarketPrice"] -
顺便说一句:
append()不会创建新列表,它会返回None所以result = arranged.append(one_stock)表示result = None,你应该使用return arranged而不是return result -
其他错误 - 你应该
append(new_name),而不是append(one_stock)
标签: python