目前我正在从UDP客户端读取数据,如下所示:
X,-3.6958579946845745e+001,Y,-1.6998436983768425e+001,Z,-8.2843220475401704e+000
X,-3.6958578049325865e+001,Y,-1.6998421509164846e+001,Z,-8.2843157671767944e+000
X,-3.6958558150477288e+001,Y,-1.6998528495040631e+001,Z,-8.2843652460239454e+000
我已经设置了一个读取原始数据的服务器,然后我需要将数据解析为3个单独的值。
import socket
UDP_IP_ADDRESS = ''
UDP_PORT_NO = 5005
serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSock.bind((UDP_IP_ADDRESS, UDP_PORT_NO))
while True:
data, addr = serverSock.recvfrom(4096)
x,y,z = parse_data(raw_data) #parse into 3 distinct values
我坚持的部分实际上是定义parse_data()
函数。我只熟悉逗号分隔或空格分隔行的简单解析。我尝试使用txt2re,但无法理解我需要创建的常规表达。
使用parse_data()
的已定义regular expressions
函数似乎也适合此处,因为它具有提供低延迟的能力。一个快速的衬垫将非常有用。
答案 0 :(得分:3)
因为你要求一个单行:
x, y, z = map(float, raw_data.split(',')[1::2])