Я почти не вижу больше для поиска google и этого сайта для решения моей проблемы.python regex find/match one or more in a string
Я хочу, чтобы выбрать одну или несколько последовательностей двух различных строк текста из строки:
например 'aSATMPA23.37aSAAWAKE----aSABATT2.05-aSASLEEPING-'
Так что я хотел бы выбрать «aSATMPA23.37», и если он есть также «aSABATT2.05».
Я попробовал следующее:
import re
serialdata = 'aSATMPA18.5-----aSBBATT2.97-aSBSLEEPING-'
def regex_serialdata(data):
GrandRegex = re.compile(r'(aS(.)(TMPA)(\d+\.\d+))|(aS(.)(BATT)(\d+\.\d+))')
match = GrandRegex.match(data)
, но это останавливается только после первого матча 'aSATMPA18.5'
Далее я попытался с помощью метода 'FindAll':
def regex_serialdata(data):
GrandRegex = re.compile(r'(aS(.)(TMPA)(\d+\.\d+))|(aS(.)(BATT)(\d+\.\d+))')
match = GrandRegex.findall(data)
print(match)
В результате: [('aSATMPA18.5', 'A', 'TMPA', '18.5', '', '', '', ''), ('', '', '', '', 'aSBBATT2.97', 'B', 'BATT', '2.97')]
Есть ли лучший способ сделать это?
Можно ли легко получить доступ к значениям в списке кортежей?
Обратите внимание, что я потратил часы на это и не прошу помощи легкомысленно.
Очень ценивший,
Пол
извините опечатка, отредактированы. –