170 похожих чатов

Требуется распозновать и классифицировать разных видов данные (бинарные, текстовые ASCII)

на основе шаблонов.
Что лучше всего использовать для этого в Python? Знаю, что есть регулярные выражения, которые вполне нормально работают с двоичными данными, но может быть, есть что-то более узкоспециализированное?

14 ответов

19 просмотров

Регулярки с двоичными данными? Впервые слышу такое.

Victor- Автор вопроса
neumond x
Регулярки с двоичными данными? Впервые слышу такое...

Да, регулярки вполне неплохо работают с байтовыми строками (bytes)

Victor
Да, регулярки вполне неплохо работают с байтовыми ...

>>> 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

Victor- Автор вопроса
neumond x
>>> re.match('[a-z]', b'0123') Traceback (most rec...

Ты пытаешься применить строковый шаблон для байтовой строки

А в чём шаблоны заданы? Мне кажется с этого надо начинать.

Victor- Автор вопроса
neumond x
А в чём шаблоны заданы? Мне кажется с этого надо н...

Шаблоны предстоит написать. Передо мной стоит выбор: брать обычные регулярные выражения или искать какие-то движки проверки соответствия шаблонов (может быть, более хорошо заточенные под работу с разными форматами) и изучать их

Victor
Шаблоны предстоит написать. Передо мной стоит выбо...

Очень мутный вопрос. Если регулярки подходят, то почему бы не использовать их? Но ведь регулярки могут и не подойти. Да и что там за данные такие, нужно бинари от текста отделить или как-то там классифицировать и бинари и текст?

Victor- Автор вопроса
neumond x
Очень мутный вопрос. Если регулярки подходят, то п...

Принимаю по TCP/IP сообщения от разных китайских железок (GPS-трекеры) с разными протоколами обмена данными. По содержанию сообщения нужно определить протокол, а затем на основе этого выбрать для него соответствующий декодер и декодировать

Victor
Принимаю по TCP/IP сообщения от разных китайских ж...

у протокола нет никакого меджика в начале? Или ты его подставить не можешь?

Victor- Автор вопроса
Nero
у протокола нет никакого меджика в начале? Или ты ...

Протоколов огромный зоопарк, один на другой не похож, структура сообщения сильно отличается) Поэтому решил, что буду писать для каждого протокола шаблон и проверять по нему соответствие сообщения целиком

Victor
Принимаю по TCP/IP сообщения от разных китайских ж...

Не уверен что это легко решаемая задача. Придётся реверсить протоколы и искать различия.

Victor
Протоколов огромный зоопарк, один на другой не пох...

ты получаешь по тцпип сообщения от разных железок, да, но немного не понимаю что мешает например по порту определять, например

Victor- Автор вопроса
Nero
ты получаешь по тцпип сообщения от разных железок,...

Порт нестабилен (он может быть любым). В общем, решил делать так, есть на то причины, на что-либо другое не могу опереться. Если кто-то знает какие-либо движки соответствия шаблонам для Python (pattern matching), поделитесь, пожалуйста

Victor
Порт нестабилен (он может быть любым). В общем, ре...

ну хз, это либо очень сложно, либо вообще невозможно, тегни меня если найдёшь решение

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта