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]
Конечно, позаботьтесь о том, какие символы вы хотите использовать в своем наборе для использования для разделения.