如何在 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])