首页 > 解决方案 > 如何使用 Python 拆分数据?

问题描述

我用 Python 创建了一个脚本来从串口读取数据。但我被分裂的部分困住了。我是这种编程语言的新手。

我想将参数保存在变量中。

import serial 
import re
from serial import Serial
ser = serial.Serial('/dev/ttyACM0')
print(ser.isOpen) #True
serial_data = ser.readline()
print(serial_data)

输出:b' H:209.44 R:4.88 P:-168.00 A:1 M0 G3 S:0 T:0.00\r\n

encoding = serial_data.decode(encoding = "ascii", errors = "ignore")

encoding_split = encoding.split(" ")

输出:['', 'H:209.44', 'R:4.88', 'P:-168.00', 'A:1', 'M0', 'G3', 'S:0', 'T:0.00\ r\n']

错误的部分:现在我想将值保存在变量中

H =(re.search(r'(?<=H:)\w+', encoding_split)
R =(re.search(r'(?<=R:)\w+', encoding_split)
P =(re.search(r'(?<=P:)\w+', encoding_split)
A =(re.search(r'(?<=A:)\w+', encoding_split)
M =(re.search(r'(?<=M)\w+',  encoding_split)
G =(re.search(r'(?<=G)\w+',  encoding_split)
S =(re.search(r'(?<=S:)\w+', encoding_split)
T =(re.search(r'(?<=T:)\w+', encoding_split)
TypeError: expected string or bytes-like object

标签: pythonpython-3.xport

解决方案


我认为问题出在 RegEx 上。

我试了,请看

import serial
import re
from serial import Serial

def main():
    # ser = serial.Serial('/dev/ttyACM0')
    # print(ser.isOpen) #True
    # serial_data = ser.readline()
    # print(serial_data)
    # encoding = serial_data.decode(encoding = "ascii", errors = "ignore")
    # encoding_split = encoding.split(" ")
    encoding_split="H:209.44', 'R:4.88', 'P:-168.00', 'A:1', 'M0', 'G3', 'S:0', 'T:0.00\r\n"
    H=(re.search(r"(?<=H:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))
    R=(re.search(r"(?<=R:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))
    P=(re.search(r"(?<=P:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))
    A=(re.search(r"(?<=A:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))
    M=(re.search(r"(?<=M)(\-*\s*[0-9]+\.*[0-9]*)",  encoding_split))
    G=(re.search(r"(?<=G)(\-*\s*[0-9]+\.*[0-9]*)",  encoding_split))
    S=(re.search(r"(?<=S:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))
    T=(re.search(r"(?<=T:)(\-*\s*[0-9]+\.*[0-9]*)", encoding_split))

    print(H.group(0))
    print(R.group(0))
    print(P.group(0))
    print(A.group(0))
    print(M.group(0))
    print(G.group(0))
    print(S.group(0))
    print(T.group(0))


if __name__ == '__main__':
    main()

推荐阅读