Python 3: Разделение на \x0 как разделитель в строке

У меня есть строка

 s = 'ABC \x03\x04 DEF \x05'

и я хочу разделить его так, чтобы я извлек только части "ABC" и "DEF". Посмотрев на этот ответ, я запустил решение, но как-то не смогло его разделить.

s = 'ABC \x03\x04 DEF \x05'
re.split(r'\\x0\d', s)
['ABC \x03\x04 DEF \x05']

Любая помощь приветствуется.

2 ответа

Решение

Вы могли бы немного улучшить свой шаблон и использовать

re.split('[\x01-\x1f\x7f]+', s)

Проблема в том, что нет \ в вашей входной строке ABC \x03\x04 DEF \x05 они настоящие персонажи

CODE    HEX     CHAR    
3       \x03    ETX  End of text
4       \x04    EOT  End of trans.
5       \x05    ENQ  Enquiry
6       \x06    ACK  Ack.
7       \x07    BEL  Bell
8       \x08    BS   Back space

Я считаю, что есть часть набора символов, называемая управляющими символами

Поэтому вам нужно использовать эти наборы символов в качестве разделенных символов.

re.split(r'[\x00-\x08]', s)    #If you don't want those characters in your results.
re.split(r'([\x00-\x08])', s)  #If you want the characters in your results.<br>

Это должно быть понято как [A-Z] или же [a-d] или же [\x03-\x08]

Конечно, позаботьтесь о том, какие символы вы хотите использовать в своем наборе для использования для разделения.

Другие вопросы по тегам