python正则表达式将原始UDP数据读入3d点

时间:2017-10-13 21:04:54

标签: python regex parsing point

目前我正在从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函数似乎也适合此处,因为它具有提供低延迟的能力。一个快速的衬垫将非常有用。

1 个答案:

答案 0 :(得分:3)

因为你要求一个单行:

x, y, z = map(float, raw_data.split(',')[1::2])