前导零/零填充不能正常工作

时间:2013-06-22 16:51:06

标签: python

我通过Serial(pySerial)从arduino获取数据。然后通过分隔符(:)将其拆分为3个值。我正在使用切片([0:5])删除2个额外的字符(我认为是新行)。

到目前为止一切顺利。但是,然后rjust或zfill甚至format()根本无法正常工作。例如,如果我使用zfill(5)并且arduino输出的值是8.00则没有变化,我得到3个字符。如果我使用zfill(7)然后它可以工作,我总共得到7个字符。

发生了什么事?

Arduino每隔~1秒输出一次:22.00:36.00:58.00

import time
import serial

connected = False

port = '/dev/ttyACM0'
baud = 9600

ser = serial.Serial(port, baud)

# loop until arduino is ready
while not connected:
    serin = ser.read()
    connected = True

# read aruino output
while ser.readline():
    readings = ser.readline().split(':', 2)

    lum = readings[2][0:5].rjust(5, '0')
    #lum = readings[2][0:5].zfill(5) same result as with rjust

    print(lum)
    time.sleep(1)

我正在使用Arduino Uno连接到运行Rasberian OS的Raspberry Pi,IDLE作为python编辑器。

1 个答案:

答案 0 :(得分:2)

readline()包含换行符。剥离换行。

readings = ser.readline().rstrip().split(':', 2)

>>> '0.00\n'.rjust(5, '0')
'0.00\n'
>>> '0.00\n'.rstrip().rjust(5, '0')
'00.00'