#arrays #python-3.x #regex
#массивы #python-3.x #регулярное выражение
Вопрос:
У меня есть байтовый массив:
b_arr = b'\xff\x02\x04\x01\x00\x02'
Я хочу получить последние 3 байта как:
out = 'b\x01\x00\x02'
Я пробовал:
m = re.search("rb'\x02\x04'(.*)",b_arr)
Но получить TypeError: TypeError: cannot use a string pattern on a bytes-like object
Ответ №1:
Технически это bytes
объект, а не bytearray
объект, и в нем есть шестнадцатеричные экранирующие коды. Это позволит получить последние три шестнадцатеричных escape-кода с помощью среза строк:
>>> b_arr = b'\xff\x02\x04\x01\x00\x02'
>>> b_arr[-3*4:]
b'\x01\x00\x02'
Регулярное выражение будет работать, если оно правильно указано:
>>> b_arr = b'\xff\x02\x04\x01\x00\x02'
>>> import re
>>> m = re.search(rb'\x02\x04(.*)',b_arr)
>>> m.group(1)
b'\x01\x00\x02'