#python #regex #serial-port #expression
Вопрос:
Я новичок в python, и я попытался извлечь некоторые элементы из строковых данных, это отлично работает при чтении одних и тех же данных из файла txt или жестко закодировать нужный ввод, но не для последовательного чтения, где я хочу, чтобы это работало
Работает извлечение нужных данных
serialdata = "data:,2,24,1,-199,-867rndata:,4,40,2,-964,-425rnTS:2TT:3rnHASH:3rnPENDING:2402rnME:55rnMA:33rnKE:75rnKA:3rn" ###" ###
pKE ='KE:(?P<KE>.*)rn'
pKA ='KA:(?P<KA>.*)rn'
match = re.search(pKE pKA, serialdata)
print(match)
if match:
print("Matches!!")
print (match.group("KE"))
print (match.group("KA"))
else:
result = ""
не работает чтение с последовательного
self.s = serial.Serial(com, timeout=5, baudrate=115200)
serialdata = self.s.readline().decode('utf-8')
serialdata = "data:,2,24,1,-199,-867rndata:,4,40,2,-964,-425rnTS:2TT:3rnHASH:3rnPENDING:2402rnME:55rnMA:33rnKE:75rnKA:3rn" ###" ###
pKE ='KE:(?P<KE>.*)rn'
pKA ='KA:(?P<KA>.*)rn'
match = re.search(pKE pKA, serialdata)
print(match)
if match:
print("Matches!!")
print (match.group("KE"))
print (match.group("KA"))
else:
result = ""
совпадение возвращает none и O a, получая то же самое, что я жестко закодировал выше…
есть какие-нибудь предложения?
Примечание:Я могу читать с последовательного порта, но не извлекать элементы с помощью регулярного выражения
С уважением
Комментарии:
1. Код, о котором вы говорите, что он не работает
serialdata = self.s.readline().decode('utf-8')
, сопровождается обоимиserialdata = "data:,2,2 ..."
. Это не может быть правдой, не так ли? Кроме того, если вы выполняете только один вызовreadline()
, как вы ожидаете, что двеrn
последовательности совпадут?