我是一个Python新手,我想把传感器的位置数据(JSON格式)转换成Excel工作簿。传感器被连续轮询,因此JSON数据是一个永不结束的字符串。在
现在,代码中有趣的部分是,数据用JSON编码,然后打印“LS:Received”,代码片段如下:
def request(self, jsonStr, timeout = 20):
try:
msgToSend = jsonStr.encode(encoding = "utf-8");
bytesSent = 0
while bytesSent < len(msgToSend):
bytesSent += self.svcSocket.send(msgToSend[bytesSent:])
recvMessage = ""
while True:
ready = select.select([self.svcSocket], [], [], timeout)
if ready[0]:
recvMessage += self.svcSocket.recv(1024 * 1024).decode(encoding = "utf-8")
if "\n" in recvMessage: #Complete message ends with \n
break
else:
#timeout...
break
第二个片段如下:
^{pr2}$我的示例代码(直接来自制造商)在这里(Python Code for RTLS)。没有合适的硬件,它就不能编译。在
该代码的输出是
收到:收到:收到的:除“id”:“0xdecan303030601ea0”,“时间戳”:15295466,“msgid”:69791,“坐标”:“{“x“:0.664,“y“:0.226,“z“:0.000,“标题:0.000,“pqf“:100“,“距离“““,““““:0.000,“pqf“:100“,“距离““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““:0.170,“dqf”:100}]}
接收:接收:接收到的:除“id”:“0xdecad303030601ea0”,“时间戳”:15295515,“msgid”:69792,“坐标”:“{“x“:0.664,“y“:0.226,“z“:0.000,“标题:0.000,“pqf“:100“,“距离“““,““““:0.000,“pqf“:100“,“距离“““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““:0.170,“dqf”:100}]}
收到:收到的:收到的:除“id”:“0xdecan303030601ea0”,“时间戳”:15295565,“msgid”:69793,“坐标”:“{“x“:0.664,“y“:0.226,“z“:0.000,“标题:0.000,“pqf“:100“,“距离“““,““““:0.000,“pqf“:100“,“距离“““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““““:0.170,“dqf”:100}]}
这一直持续到我关闭程序。在
第一个id是移动“标签”的id,它在一个由“锚”封装的区域中移动。id是不变的,永远不会改变。当然,有了更多的锚,会有更多,但他们的“名字”总是一样的 . 在
标记的坐标在x、y、z方向。它们不断变化。在
Dist是锚点到标记的距离。它不断变化。在
Msgid是消息id,它会随着每条消息的增加而递增。在
时间戳也更改。在
其余的数据可以忽略。在
我心目中的电子表格应该只显示x、y、z和dist作为更改参数,如下所示(还不能发布图像):
我曾经尝试过使用xlwt包,但是我一辈子都无法理解如何解析这个传入的JSON数据。我试图使用split(),但没用。我对Python的缺乏经验真的拖慢了我的速度。在
任何建议,无论多么微不足道,我们都将不胜感激。非常感谢。在
没关系,你没有做我认为你在做的事。尝试使用
simplejson
模块。以下是您可能会做的:此时,
json
应该是表示该响应的字典。在我想我也会创建csv而不是Excel文档。一旦你习惯了XLWT就足够简单了,但是你可以更容易地创建CSV文件,而且你不需要做任何花哨的格式化。在
您可以尝试使用我的库pyexcel来帮助您将python data导出到任何类型的excel文件(csv、xls、xlsx或ods)。在
下面是一段示例代码:
相关问题 更多 >
编程相关推荐