【发布时间】:2019-03-12 23:21:13
【问题描述】:
我正在使用加密货币交换 API,我一直试图让它只从 API 的列表中提取符号和最后一个。如果列表在代码本身中,我找到了许多解决方案,但是我无法从 API 中提取两个所需的项目、字段,无论您想调用什么,但是在检查键时我得到 None。我尝试了许多在本网站和其他人的教程上找到的方法,但一直遇到错误。这是我与 API 对话的代码:
def pull():
r = requests.get('API_ADDRESS')
data = r.json()
print(type(data)) # confirms type is list
输出:类“列表”
这是通过浏览器从页面开头/顶部的 API URL 中的一小部分:
[{"ask":"0.00000019438","bid":"0.00000019436","last":"0.00000019437","open":"0.00000017778","low":"0.00000017500","high":"0.00000020000","volume":"215392000","volumeQuote":"39.177612838","timestamp":"2019-03-12T22:54:35.168Z","symbol":"BCNBTC"},{"ask":"3886.77","bid":"3886.76","last":"3886.76","open":"3868.90","low":"3814.66","high":"3903.39","volume":"33598.51324","volumeQuote":"129840974.9750335","timestamp":"2019-03-12T22:55:44.772Z","symbol":"BTCUSD"},{"ask":"0.023432","bid":"0.023403","last":"0.023404","open":"0.021257","low":"0.021208","high":"0.023639","volume":"78033.270","volumeQuote":"1720.630098144","timestamp":"2019-03-12T22:55:38.179Z","symbol":"DASHBTC"},
根据 API 文档,使用 curl 是如何提取数据的,所以我想知道我是否以错误的方式将其拉下,这是问题的一部分吗?完整列表是所有受支持的以 [ 开头并以 ] 结尾的货币,每种货币以 {} 开头和结尾。
我一直在使用像这样的 API,它们是 dicts 并且有没有问题的键:
{
'items':[
{
'created_on':'2016-11-08',
'etag':'DELETED',
'classification':{
'type':'charge-description',
'description':'A registered charge'
我想把符号拉到最后。我能够获取符号或最后打印的唯一方法是在前面添加 [0],但随后只打印列表的第一个条目。我只是在学习 Python,所以我不确定在没有额外代码或冗余代码的情况下完成这项任务的最佳方法。我想尽可能保持清洁。我已经使用上面的核心代码与另一个 API 对话,它是一个 dict 并以结果开头:= 所以很容易提取我想要的数据,但这是我尝试使用的第一个 API JSON 列表,所以我需要一个帮助不大,所以我可以从这个挑战中学习。
我确实尝试过: python getting a list of value from list of dict
但所有列表都在代码本身中,而不是从 API 中提取的列表。作为另一种选择,我从 requests 转移到 pycurl,现在在检查类型时它显示为:
<class 'bytes'>
经过更多研究,我找到了一个解决方案,并在下面发布了我的新工作代码作为答案。
【问题讨论】:
-
您能否还包括输出应该是什么样的?
-
您误会了,我问是否需要将列表转换为字典,API 输出是一个列表,我只想从整个列表中提取符号和最后一个,您可以从中看到我的 print(type(data)) 它是一个列表
标签: json api python-3.7