python拆分字节字符串

时间:2017-08-22 20:14:04

标签: python serial-port int byte

所以我在Python上编写了一个代码,用于通过RS232端口连接到我的计算机。现在我使用以下代码使用该部分:

import serial

while True:
    ser = serial.Serial('COM2', 9600, timeout = 1)
    print(ser.name)
    ser.write(b'w')
    line = ser.readline()
    print(line)
    ser.close()

每当我以字节为单位发送'w'时,它会发送回值。看起来像这样:

COM2
b'       0.000 kg \r\n'

首先打印com-port的名称,然后在下一行打印接收到的数据。然而。我想将值(数字)隔离为int。

我尝试使用:

line = ser.readline()[:-6]
int(line)

这摆脱了所有垃圾“kg \ r \ n”。并且只留下数字。但是,当然,Python不允许我将字节字符串更改为整数。这可能是一个愚蠢的初学者问题,就像我的其他两个帖子一样,但请耐心等待我,我现在只编写了大约2周。

1 个答案:

答案 0 :(得分:0)

您猜测必须将读取的串行二进制文件返回的字节转换(即 decode )到字符串,您可以进一步解析。使用bytes.decode("ascii")应该在这里(看不到奇怪的字符)。

然后,转换为 float ,而不是 int 。此外,如果您知道第一个字段是您的值,则使用str.split对更改更加健壮:

>>> line = b'       0.000 kg \r\n'
>>> value = float(line.split()[0].decode("ascii"))

结果为0.0