如何在Python中解析sse.client的输出?

Jay*_*y L 4 python-2.7 server-sent-events

我是Python的新手,我正试图在解析SSE客户端代码方面取得领先.我正在使用SSE客户端库.我的代码非常基础,完全遵循示例.这里是:

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))
Run Code Online (Sandbox Code Playgroud)

代码运行没有问题,我看到一些空行和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'>
Run Code Online (Sandbox Code Playgroud)

上面的实际输出看起来像字典,但其类型是"sseclient.Event".我试图找出如何解析输出,以便我可以拉出其中一个字段,我尝试过的任何东西都没有.

很抱歉,如果这是基本问题,但有人可以提供一些简单的指导,说明如何将整个输出转换为字典或者只是拉出其中一个字段?

先感谢您!

Jay*_*y L 7

我想通了.如果其他人遇到同样的问题,这就是我如何让它工作.关键是使用msg.data而不仅仅是msg.然后我使用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])
Run Code Online (Sandbox Code Playgroud)