2017-10-13 6 views
1

:私は生のデータを読み込み、サーバーを設定していると私はその後、必要Pythonの正規表現は、3Dポイントに生のUDPデータを読み込む現在、私はこのようになります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.6958579946845745e + 001')か、大きさをキャプチャする必要があります別々に(例えば、 'xValue = -3.6958579946845745'と' xMagnitude = 1')? –

答えて

3

あなたはワンライナーを求めたので:

x, y, z = map(float, raw_data.split(',')[1::2]) 
関連する問題