python - 如何使用 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
解决方案
我认为问题出在 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()
推荐阅读
- python - pandas DataFrame:列中相同符号的值相加的最大值和最小值
- powershell - 脚本仅适用于本地机器
- html - 边框的意外 CSS 行为
- javascript - 使用 D3.js 的不同条形数据 x 轴
- google-chrome - 如何将扩展程序从一台 PC 上的一个 Chrome 传输到另一台 PC 上的另一个 Chrome
- reactjs - 如何使用 webpack-dev-middleware 设置环境变量?
- promise - 订阅 keycloak 的注销方法不会被调用
- opencv - 为什么 opencv3 不支持 Python 3.7?
- python - Discord.py-Rewrite 在出现未知命令或其他错误时发送错误消息
- azure - 在火花阶段动态添加机器