Как объединить несколько переменных? - PullRequest
1 голос
/ 08 января 2020

У меня три УФ-датчика - вывод целых чисел; один BME280 - выход поплавка (температура и давление); и один модуль GPS - плавающий вывод. Мне нужно построить строку в этой форме - # имя команды; температура; давление; 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'))

Ответы [ 3 ]

3 голосов
/ 08 января 2020

Если используется python 3.6+, тогда вы можете сделать это вместо

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

(...)

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

Если teamname и gpscoordinates также являются переменными, то добавьте их таким же образом

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

(...)

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

Для больше информации о форматировании строки https://realpython.com/python-f-strings/

3 голосов
/ 08 января 2020

Вы можете попробовать что-то вроде этого:

vars = [teamname, temperature, pressure, uv_1, uv_2, uv_3, gpscoordinates]
joined = ';'.join( map( str, vars ))
ser.write( '#%s# \n', joined )
1 голос
/ 08 января 2020

Это может улучшить читаемость при использовании python format:

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

при условии, что gpscoordinates - это текст (его нет в вашем попытки кода). Если это переменная, то замените текст на {} и добавьте его в качестве параметра к format.

...