Это побочный продукт Как в Python разделить строку и сохранить разделители?
rawByteString = b'\\!\x00\x00\x00\x00\x00\x00\\!\x00\x00\x00\x00\x00\x00'
Как я могу разделить этот rawByteString на части, используя \\! как разделитель, не отбрасывая разделители, так что я получаю:
[b'\\!\x00\x00\x00\x00\x00\x00', b'\\!\x00\x00\x00\x00\x00\x00']
Я не хочу использовать [b'\\!' + x for x in rawByteString.split(b'\\!')][1:]
, так как это будет использовать string.split() и является просто обходным путем, поэтому этот вопрос помечен модулем re.
import re rawByteString = b'\\!\x00\x00\x00\x00\x00\x00\\!\x00\x00\x00\x00\x00\x00' [x for x in re.split(b'(\\\\!)', rawByteString)][1:]
:[b'\\!', b'\x00\x00\x00\x00\x00\x00', b'\\!', b'\x00\x00\x00\x00\x00\x00']
это не то, что мне нужно, мне нужно[b'\\!\x00\x00\x00\x00\x00\x00', b'\\!\x00\x00\x00\x00\x00\x00']
- person questionto42   schedule 26.06.2020re.split(rb'(?!\A)(?=\\!)', rawByteString)
см. ideone.com/L9n1V9. - person Wiktor Stribiżew   schedule 26.06.2020lst_Bytes = re.split(b'(?<!^)(?=\\\\!)', rawByteString)
- person JvdV   schedule 26.06.2020(?!\A)
=(?<!^)
, посколькуre.M
не передается, а"\\\\"
=r"\\"
- person Wiktor Stribiżew   schedule 26.06.2020str.split
, а неre.split
. JvdV и я исправили шаблон регулярного выражения для вас, но вы могли бы сами прийти к этому решению, если бы использовали правильный шаблон с самого начала. Если вы отредактируете вопрос (показывая, что используете правильный метод, но по-прежнему не получаете ожидаемого результата), он может быть повторно открыт. Если это произойдет, я добавлю ответ. Если кто-нибудь знает лучший дубликат, не стесняйтесь изменить текущую дублирующую ссылку на тему или дайте мне знать. - person Wiktor Stribiżew   schedule 26.06.2020