我知道这可能是一个愚蠢的问题,但我仍然在学习使用python的网络套接字。
以下是我测试api的代码。
import json
from websocket import create_connection
ws = create_connection("wss://api2.bitfinex.com:3000/ws")
ws.send(json.dumps({
"event": "subscribe",
"channel": "book",
"pair": "BTCUSD",
}))
while True:
result = ws.recv()
result = json.loads(result)
print ("Received '%s'" % result)
ws.close()
现在这是我的问题。我知道使用REST API,您可以定义变量并为其分配JSON请求。
bitFinexTick = requests.get("https://api.bitfinex.com/v1/ticker/btcusd")
return bitFinexTick.json()['last_price']
这将返回以下内容
{"mid":"2276.85","bid":"2274.6","ask":"2279.1","last_price":"2275.0","timestamp":"1495763263.217562408"}
然后输出
"2275.0"
但是,使用websocket API时,响应不会标记,例如下面。
[5, 2306.9, 0.0989, 2307.2, 0.07409371, -176.49194056, -0.0711, 2307.2, 55446.734771, 2690, 2141.1]
bitfinex文档后面的数据格式如下。
[
"<CHANNEL_ID>",
"<BID>",
"<BID_SIZE>",
"<ASK>",
"<ASK_SIZE>",
"<DAILY_CHANGE>",
"<DAILY_CHANGE_PERC>",
"<LAST_PRICE>",
"<VOLUME>",
"<HIGH>",
"<LOW>"
]
现在我的问题是,如何仅从json数组中专门提取LAST_PRICE并将其分配给结果?
感谢一百万人的帮助!
答案 0 :(得分:0)
所以你在python中有什么是正确的列表吗?
所以你只是这样做:
return bitFinexTick.json()[7]
而不是
return bitFinexTick.json()['last_price']
这是因为他们没有返回'字典' - 他们很好地命名键和值,只是一个值列表。
所以你知道你想要的值(last_price)总是列表中的第8个值。因此,当我们开始在Python中将索引计数为0时,该值的索引为7。