2016-03-29 11 views
0

Ich bin neu auf dieser Seite und Python. Ich habe an einem Projekt gearbeitet, das Variablen aus eingehenden seriellen Daten extrahieren und eventuell anzeigen muss. Ich arbeite gerade an der Analyse der Daten und ich habe ein bisschen Probleme. Die seriellen Daten sieht wie folgt zum Beispiel:Serielle Daten in Python analysieren

a3b5f45c9g8a4c10f64; 
f4h87d34k9h4j3d3; 
h6f54a12a13a14a15b12b13; 

Es mit dem Buchstaben bezeichnet mehrere Variablen ist vor dem Wert und sie kommen in keiner bestimmten Reihenfolge. Etwa einmal pro Sekunde bricht die Linie mit einem Semikolon. Die gleiche Variable kann mehrmals oder gar nicht pro Zeile erscheinen. Der nächste, den ich bekommen habe, ist Regex, um den Wert zwischen dem identifizierenden Buchstaben und der nächsten Nicht-Nummer zu finden, wenn das sinnvoll ist. Das Problem, das ich habe, ist, dass es nur das erste Match zurückgibt und dann stoppt. Ich brauche die Variable, um ständig aktualisiert zu werden. Ich habe mich in den letzten paar Tagen am Kopf kratzt, jede Anleitung wird sehr geschätzt.

import serial 
import re 

ser = serial.Serial('COM6', 9600, timeout=2) 

while True: 
    data_raw = ser.readline() 
    print(data_raw) 

    apples = re.search('a(.+?)\D', data_raw) 
    if apples: 
    applesvar = apples.group(1) 
    print applesvar 

    cherries = re.search('c(.+?)\D', data_raw) 
    if cherries: 
    cherriesvar = cherries.group(1) 
    print cherriesvar 


ser.close 

Antwort

1

Sie sind fast da. Mit der ersten Zeile Ihres Beispiels

line = 'a3b5f45c9g8a4c10f64' 

re.findall('a(.+?)\D', line) 
['3', '4'] 

re.findall('c(.+?)\D', line) 
['9', '10'] 
+0

Das sieht aus, als ob es ein Array von Werten zurückgibt. Wenn meine Variable beispielsweise applesvar ist, müsste sie 3 und dann 4 sein. Ich sehe nicht, wie das mit einem Array funktionieren würde. Ich entschuldige mich, wenn ich falsch verstanden habe. – SinPiedad

+0

Ich gebe Ihnen ein größeres Bild. Und ich glaube, du hast das verstanden. Tun Sie Ihre Sorgfalt und finden Sie den Rest. – Hun