Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法正确格式化字符串_Python_Tkinter_Raspbian - Fatal编程技术网

Python 无法正确格式化字符串

Python 无法正确格式化字符串,python,tkinter,raspbian,Python,Tkinter,Raspbian,拉斯比安,rp3 我可以从PC控制台向GUI发送字符串。例如: $SK039AR878HT010 出于测试目的,我从控制台手动发送此命令,但将来我的控制台将被一台机器取代 该命令基本上指示:SK=3.9,AR=87.8,HT=10%进度条。这些值进入GUI并在GUI上相应地设置 同时,GUI也不断地向控制台发送类似的字符串以响应我发送的内容:$SK039AR878HT010 $ST039HT10 ST在GUI上手动设置 现在的问题是通信协议说,每个变量后面应该有三位数字。但是可以看出,对于HT,

拉斯比安,rp3

我可以从PC控制台向GUI发送字符串。例如:

$SK039AR878HT010

出于测试目的,我从控制台手动发送此命令,但将来我的控制台将被一台机器取代

该命令基本上指示:SK=3.9,AR=87.8,HT=10%进度条。这些值进入GUI并在GUI上相应地设置

同时,GUI也不断地向控制台发送类似的字符串以响应我发送的内容:$SK039AR878HT010

$ST039HT10

ST在GUI上手动设置

现在的问题是通信协议说,每个变量后面应该有三位数字。但是可以看出,对于HT,后面是两个数字,即10。正确的格式是

$ST039HT010

为了实现与ST相同的功能,正如您所看到的039,有一个三位数,代表3.9,我这样做:

            if self.App.stval<10:

               self.App.port.write(serial.to_bytes(str.encode('$'+ 'ST'+'0' + str(int(self.App.stval*10))+'HT'+ str(int(self.App.mpb["value"]))+';' )) )
            else:
                self.App.port.write(serial.to_bytes(str.encode('$'+ 'ST' + str(int(self.App.stval*10))+'HT'+str(int(self.App.mpb["value"]))+';' )) )
这里,stval是ST设置温度的值,在上述情况下,通过GUI完成,温度为3.9℃

也就是说,只要ST值stval小于10,就插入一个“0”。因此,ST后面跟着三位数字

我无法开发逻辑,因为我对python还不熟悉如何使用HT进行相同的三位数格式化?HT是进度条整数上的一个值,不能超过100%,而ST是室温,几乎不会超过50%,可以是十进制


我将非常感谢你在这方面对我的帮助

您可以通过基本的字符串格式来实现这一点

stval = '$ST39HT10'
st_values = stval.split('ST')[1].split('HT')
st_values = ['0' + value if len(value)<3 else value for value in st_values ]
new_stval = '$ST'+ st_values[0] + 'HT' + st_values[1]
print(new_stval)

如果stval不是字符串,请使用strhtval.zfill3将零填入该值。

非常感谢您的评论。但实际上这里的stval是ST设置温度的值,在上面的情况下是3.9摄氏度。它不是代码中的字符串。好的。然后请用零填充。strhtval.zfill3。由于htval是一个实数,它将起作用。zfill3解决了我的问题。非常感谢你。请在您的答案中发布此内容,以便我选择它作为已接受的答案。它将添加到答案中。谢谢
$ST039HT010