Как разделить строку в Python с сохранением разделителя?

Есть строка привет\n\nземля. Хочу разделить строку по разделителю \n.

z = text.split('\n') 

на выходе получается

привет
\n
земля

а мне нужно

привет
\n
\n
земля

То есть чтобы дублирующий разделитель не удалялся


Ответы (2 шт):

Автор решения: gil9red

Используйте str.splitlines([keepends]) с флагом keepends=True, тогда разделители останутся:

text = 'привет\n\nземля'
print(text.splitlines(keepends=True))
# ['привет\n', '\n', 'земля']

UPD. Немного доработки для разделения \n от элементов:

text = 'привет\n\nземля'
lines = []
for line in text.splitlines(keepends=True):
    if len(line) > 1 and line.endswith('\n'):
        lines.extend([line[:-1], '\n'])
    else:
        lines.append(line)

print(lines)
# ['привет', '\n', '\n', 'земля']
→ Ссылка
Автор решения: insolor

Через регулярные выражения:

import re

text = 'привет\n\nземля'
parts = re.findall(r'(\n|.+)', text)
print(parts)  # ['привет', '\n', '\n', 'земля']
→ Ссылка