Это звучит как работа для регулярных выражений!
\@[^\n]*\n([^\@]*)\n(?=\@)
Это регулярное выражение будет соответствовать:
- Во-первых, буквальный
@
знак
- Затем любая строка символов, заканчивающаяся символом новой строки
- Затем все, что он может найти, но не включает
@
: эта часть сохраняется в группе # 1
- Затем перевод строки завершает все это
- Наконец, принимайте, только если следующий символ
@
(но не используйте этот символ)
Как пример:
>>> re.search(r'\@[^\n]*\n([^\@]*)\n(?=\@)', your_string).group(1)
'81 00 00 5C B1 13 3E 01 0C 43 B1 13 A6 00 1C 43 \nB1 13 38 01 32 D0 10 00 FD 3F 03 43 00 00 00 02 '
Итак, чтобы получить список важных вещей:
>>> [m.group(1) for m in re.finditer(r'\@[^\n]*\n([^\@]*)\n(?=\@)', your_string)]
['81 00 00 5C B1 13 3E 01 0C 43 B1 13 A6 00 1C 43 \nB1 13 38 01 32 D0 10 00 FD 3F 03 43 00 00 00 02 ', '14 5C 14 5C 14 5C 14 5C 14 5C 14 5C 14 5C 14 5C \n14 5C 14 5C 14 5C 14 5C 14 5C 14 5C 14 5C 14 5C \n14 5C 14 5C 14 5C 14 5C 14 5C 14 5C 00 5C CF 0C ']
Или, для более простого ответа:
re.split(r'\@[^\n]*\n', your_string)
Разделять строку всякий раз, когда вы найдете строку, начинающуюся с @
.