Python RE библиотека String Разделить, но оставить разделители / разделители как часть следующей строки - PullRequest
0 голосов
/ 27 апреля 2020

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

В настоящее время я разбиваю строку

my str = 'a+0b-2a+b-b'
re.split(r'([+-])', my_str)

, которая дает мне строки и разделители в списке

['a', '+', '0b', '-', '2a', '+', 'b', '-', 'b']

Но я бы хотел разделители, которые + или - для включения в следующую строку, а не как отдельный элемент. Таким образом, результат должен быть:

['a', '+0b', '-2a', '+b', '-b']

Ценю любую помощь

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Если вы используете python 3.7+, вы можете разделить на совпадения нулевой длины, используя re.split и положительный прогноз:

string = 'a+0b-2a+b-b'
re.split(r'(?=[+-])', string)

# ['a', '+0b', '-2a', '+b', '-b']

Демо: https://regex101.com/r/AB6UBa/1

1 голос
/ 27 апреля 2020

Попробуйте с re.findall:

my_str = 'a+0b-2a+b-b'
re.findall(r'([+-]?[^+-]*)', my_str)

Выходы:

['a', '+0b', '-2a', '+b', '-b', '']
...