如何连接多个变量?

问题描述 投票:1回答:3

我有三个紫外线传感器-整数输出; 1个BME280-浮子输出(温度和压力);和一个GPS模块-浮动输出。我需要以这种形式构建一个字符串-#teamname; temperature; pressure; uv_1; uv_2; uv_3; gpscoordinates#

并且每秒至少通过ser.write发送一次-我正在使用APC220模块

这是正确(也是最快)的方法吗?

textstr = str("#" + "teamname" + ";" + str(temperature) + ";" + str(pressure) + ";" + str(uv_1) + ";" + str(uv_2) + ";" + str(uv_3) + "#")

(...)

ser.write(('%s \n'%(textstr)).encode('utf-8'))

python raspbian
3个回答
3
投票

您可以尝试这样的事情:

vars = [teamname, temperature, pressure, uv_1, uv_2, uv_3, gpscoordinates]
joined = ';'.join( map( str, vars ))
ser.write( '#%s# \n', joined )

2
投票

如果使用python 3.6+,则可以代替

textstr = f"#teamname;{temperature};{pressure};{uv_1};{uv_2};{uv_3}# \n"

(...)

ser.write((textstr).encode('utf-8'))

如果teamnamegpscoordinates也是变量,则以相同的方式添加它们

textstr = f"#{teamname};{temperature};{pressure};{uv_1};{uv_2};{uv_3};{gpscoordinates}# \n"

(...)

ser.write((textstr).encode('utf-8'))

0
投票

使用python的format可能会提高可读性:

textstr = "#teamname;{};{};{};{};gpscoordinates#".format(temperature, pressure, uv_1, uv_2, uv_3)
ser.write(('%s \n'%(textstr)).encode('utf-8'))

假设gpscoordinates是文本(不在您尝试的代码中)。如果它是变量,则用{}替换文本,并将其作为参数添加到format

© www.soinside.com 2019 - 2024. All rights reserved.