на основе шаблонов.
Что лучше всего использовать для этого в Python? Знаю, что есть регулярные выражения, которые вполне нормально работают с двоичными данными, но может быть, есть что-то более узкоспециализированное?
Регулярки с двоичными данными? Впервые слышу такое.
Да, регулярки вполне неплохо работают с байтовыми строками (bytes)
>>> re.match('[a-z]', b'0123') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.8/re.py", line 191, in match return _compile(pattern, flags).match(string) TypeError: cannot use a string pattern on a bytes-like object
Ты пытаешься применить строковый шаблон для байтовой строки
А в чём шаблоны заданы? Мне кажется с этого надо начинать.
Шаблоны предстоит написать. Передо мной стоит выбор: брать обычные регулярные выражения или искать какие-то движки проверки соответствия шаблонов (может быть, более хорошо заточенные под работу с разными форматами) и изучать их
Очень мутный вопрос. Если регулярки подходят, то почему бы не использовать их? Но ведь регулярки могут и не подойти. Да и что там за данные такие, нужно бинари от текста отделить или как-то там классифицировать и бинари и текст?
Принимаю по TCP/IP сообщения от разных китайских железок (GPS-трекеры) с разными протоколами обмена данными. По содержанию сообщения нужно определить протокол, а затем на основе этого выбрать для него соответствующий декодер и декодировать
у протокола нет никакого меджика в начале? Или ты его подставить не можешь?
Протоколов огромный зоопарк, один на другой не похож, структура сообщения сильно отличается) Поэтому решил, что буду писать для каждого протокола шаблон и проверять по нему соответствие сообщения целиком
Не уверен что это легко решаемая задача. Придётся реверсить протоколы и искать различия.
ты получаешь по тцпип сообщения от разных железок, да, но немного не понимаю что мешает например по порту определять, например
Порт нестабилен (он может быть любым). В общем, решил делать так, есть на то причины, на что-либо другое не могу опереться. Если кто-то знает какие-либо движки соответствия шаблонам для Python (pattern matching), поделитесь, пожалуйста
ну хз, это либо очень сложно, либо вообще невозможно, тегни меня если найдёшь решение
Обсуждают сегодня