[英]publication of a list of float in mqtt, this returns me a list of string
我是 python 和 mqtt 连接的新手,我正在尝试从 node-red 向 mqtt 连接发送一个浮动坐标数组。
[ 1.569326954184064e-16, 0.002832536751320802, 0.0009944428903551428, 0.0020108790027094717, 0.0005157974272640295, 0.0015507524397321535, 0.0019721403935832175, 0.0020006052222184875, 0.003397701323871767, 0.0018728627212459418 … ]
当我收到它的数据时,我会收到一个字符串列表,其中每个字符都在列表的一个元素中。
def on_message(client, userdata, message):
print("received message =",str(message.payload.decode("utf-8")))
analyse(message.payload.decode("utf-8"))
def analyse(donnee):
print("data")
print(donnee)
print(type(donnee[5]))
print((donnee[0]))
print((donnee[1]))
print((donnee[2]))
print((donnee[3]))
print((donnee[4]))
print((donnee[5]))
我有这个作为回报
received message = [1.569326954184064e-16,0.002832536751320802,0.0009944428903551428,0.0020108790027094717,0.0005157974272640295,0.0015507524397321535,0.0019721403935832175,
data
[1.569326954184064e-16,0.002832536751320802,0.0009944428903551428,0.0020108790027094717,0.0005157974272640295,0.0015507524397321535,0.0019721403935832175
<class 'str'>
[
1
.
5
6
9
我想知道如何在 message.payload 中获取浮动格式的坐标列表。 像这样:
print((donnee[0]))
print((donnee[1]))
1.569326954184064e-16
0.002832536751320802
感谢您的帮助
使用ast.literal_eval
评估文字表达式:
import ast
def analyse(donnee):
donnees = ast.literal_eval(donnee)
return donnees
data = b'[1.569326954184064e-16,0.002832536751320802,0.0009944428903551428,0.0020108790027094717,0.0005157974272640295,0.0015507524397321535,0.0019721403935832175]'
print(analyse(data.decode('utf-8')))
# Output
[1.569326954184064e-16, 0.002832536751320802, 0.0009944428903551428, 0.0020108790027094717, 0.0005157974272640295, 0.0015507524397321535, 0.0019721403935832175]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.