Как убрать последовательность символ из byte array?
Имеется последовательность byte array, например:
b'ontetwothree 1/10 OK
fourfivesex 2/10 /□\□/□\□/□\□/□\ OK
seveneightnine 3/10 \□/□\ OK'
Во второй и третьей строке есть последовательность символов, которые получаются следующим образом. Приложение, написанное на PyQt5, используя QProcess, запускает консольную программу, а вывод этой программы отображается в QTextEdit. Приложение, которое запускает QProcess, полностью консольное. В этом приложении ожидание ответа, например, от удалённого сервера, реализовано посредством "spinning command line cursor". Само собой, если в консоли эта фича отрабатывает как надо, то перенося вывод в PyQt-виджет будет то, что я написал выше - слэш, обратный слэш и квадрат (u'\u25A1'). В последовательности byte array содержатся также другие ненужные символы, которые я убираю:
string = re.sub(b"\x1b.{2,4}", b"", byte_raw)
Вопрос, какой регуляркой можно избавиться от этой последовательности, учитывая, что в выводе присутствуют нужные слэши, например "...othree 1/10 OK..."? Или может есть способ очистить вывод от ненужных символов с помощью QProcess? Спасибо.
Ответы (1 шт):
Используйте
re.sub(b'(?:/\xe2\x96\xa1\\\\(?:\xe2\x96\xa1)?)+\\\\?', b'', byte_raw, flags=re.I)
Подробности
(?:/\xe2\x96\xa1\\\\(?:\xe2\x96\xa1)?)+- 1 и более последовательностей/- символ.\xe2\x96\xa1- последовательность байтов\\- символ\(?:\xe2\x96\xa1)?- необязательная последовательность байтов
\\?- необязательный символ\