Как разделить строку в 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', 'земля']