如何在 Python 中解析 sse.client 的输出?
How to parse output from sse.client in Python?
我是 Python 的新手,我正努力在解析 SSE 客户端代码方面取得领先。我正在使用 SSE Client library。我的代码非常基础,完全遵循示例。这是:
from sseclient import SSEClient
devID = "xxx"
AToken = "xxx"
sparkURL = 'https://api.spark.io/v1/devices/' + devID + '/events/?access_token=' + AToken
messages = SSEClient(sparkURL)
for msg in messages:
print(msg)
print(type(msg))
代码运行没有问题,我看到一些空白行和 SSE 数据通过。这是示例输出:
<class 'sseclient.Event'>
{"data":"0 days, 0:54:43","ttl":"60","published_at":"2015-04-09T22:43:52.084Z","coreid":"xxxx"}
<class 'sseclient.Event'>
<class 'sseclient.Event'>
{"data":"0 days, 0:55:3","ttl":"60","published_at":"2015-04-09T22:44:12.092Z","coreid":"xxx"}
<class 'sseclient.Event'>
上面的实际输出看起来像一个字典,但它的类型是"sseclient.Event"。我试图弄清楚如何解析输出,以便我可以提取其中一个字段,但我尝试过的任何方法都没有奏效。
抱歉,如果这是基本问题,但有人可以提供一些简单的指导,告诉我如何将整个输出转换为字典,或者只是提取其中一个字段吗?
提前致谢!
我想通了。万一其他人遇到同样的问题,这就是我如何让它工作的。关键是使用 msg.data 而不仅仅是味精。然后我使用 JSON 库转换了输出并且很高兴。
messages = SSEClient(sparkURL)
for msg in messages:
outputMsg = msg.data
if type(outputMsg) is not str:
outputJS = json.loads(outputMsg)
FilterName = "data"
#print( FilterName, outputJS[FilterName] )
print(outputJS[FilterName])
我是 Python 的新手,我正努力在解析 SSE 客户端代码方面取得领先。我正在使用 SSE Client library。我的代码非常基础,完全遵循示例。这是:
from sseclient import SSEClient
devID = "xxx"
AToken = "xxx"
sparkURL = 'https://api.spark.io/v1/devices/' + devID + '/events/?access_token=' + AToken
messages = SSEClient(sparkURL)
for msg in messages:
print(msg)
print(type(msg))
代码运行没有问题,我看到一些空白行和 SSE 数据通过。这是示例输出:
<class 'sseclient.Event'>
{"data":"0 days, 0:54:43","ttl":"60","published_at":"2015-04-09T22:43:52.084Z","coreid":"xxxx"}
<class 'sseclient.Event'>
<class 'sseclient.Event'>
{"data":"0 days, 0:55:3","ttl":"60","published_at":"2015-04-09T22:44:12.092Z","coreid":"xxx"}
<class 'sseclient.Event'>
上面的实际输出看起来像一个字典,但它的类型是"sseclient.Event"。我试图弄清楚如何解析输出,以便我可以提取其中一个字段,但我尝试过的任何方法都没有奏效。
抱歉,如果这是基本问题,但有人可以提供一些简单的指导,告诉我如何将整个输出转换为字典,或者只是提取其中一个字段吗?
提前致谢!
我想通了。万一其他人遇到同样的问题,这就是我如何让它工作的。关键是使用 msg.data 而不仅仅是味精。然后我使用 JSON 库转换了输出并且很高兴。
messages = SSEClient(sparkURL)
for msg in messages:
outputMsg = msg.data
if type(outputMsg) is not str:
outputJS = json.loads(outputMsg)
FilterName = "data"
#print( FilterName, outputJS[FilterName] )
print(outputJS[FilterName])