I have below list
l = ['7E', '00', '10', '97', '9A', '00', '13', 'A2', '00', '41', 'B6', '13', '58', 'FF', 'FE', '41', '50', '00', '01', '28']
From above list, I want to extract 41 B6 13 58, which always comes after 00 13 A2 00 and is always length 4.
I thought of extracting this based on the index of 00 (just before 41) but there can be many 00 in the list so this will not be always correct.
So I have to make sure its always 00 13 A2 00 and then get the index of 00 (which is after A2) and from this index extract next 4 items which should be the final output. But I am unable to decide how to go for it. Can anyone please help.
CodePudding user response:
for i in range(0, len(l)-8):
if l[i:i 4] == ['00', '13', 'A2', '00']:
return l[i 4:i 8]
So what we are doing: looking linearly for those four given values (indices i, i 1, i 2, and i 3), and if we find them, we take the next four values from the list - indices i 4, i 5, i 6, and i 7.
CodePudding user response:
l = ['7E', '00', '10', '97', '9A', '00', '13', 'A2', '00', '41', 'B6', '13', '58', 'FF', 'FE', '41', '50', '00', '01', '28']
SEQUENCE = "00 13 A2 00"
str_l = " ".join(l)
print(str_l)
position = str_l.find(SEQUENCE) # this gives us the position where the sequence starts
print(position)
required = "xx xx xx xx" # assuming we dont know what exactly to extract, but we know its length
req = str_l[position len(SEQUENCE) 1: position len(SEQUENCE) len(required) 1]
print(req)
# to get the required output
req = req.split(" ")
print(req)
