【发布时间】:2017-10-13 21:04:53
【问题描述】:
目前我正在从一个如下所示的 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,但无法理解我需要创建的正则表达式。
使用regular expressions 的已定义parse_data() 函数似乎也适合这里,因为它能够提供低延迟。一个快速的班轮会非常有帮助。
【问题讨论】:
-
您需要将完整的数字捕获为单个字符串值(例如
-3.6958579946845745e+001)还是需要单独捕获幅度(例如xValue = -3.6958579946845745和xMagnitude = 1)?
标签: python regex parsing point