Is there a way to split string from a file based to line space?

Viewed 61

Suppose I have a file that contains the following


Pellentesque dapibus suscipit ligula.  Donec posuere augue in qu
am.  Etiam vel tortor sodales tellus ultricies commodo.  Suspendisse potenti.  Aenean in
 sem ac leo mollis blandit.  Donec neque quam, dignissim in, molli
s nec, sagittis eu, wisi.  Phasellus lacus.  Etiam laoreet quam se
d arcu.  Phasellus at dui in ligula mollis ultricies.  Integer pl
acerat tristique nisl.  Praesent augue.  Fusce commodo.  Vestibul
um convallis, lorem a tempus semper, dui dui euismod elit, vitae placer
at urna tortor vitae lacus.  Nullam libero mauris, consequat quis, var
ius et, dictum id, arcu.  Mauris mollis tincidunt felis.
  Aliquam feugiat tellus ut neque.  Nulla facilisis, risus a rhoncus
 fermentum, tellus tellus lacinia purus, et dictum nunc justo sit amet elit.


Pellentesque dapibus suscipit ligula.  Donec posuere augue in q
uam.  Etiam vel tortor sodales tellus ultricies commodo.  Suspendisse
 potenti.  Aenean in sem ac leo mollis blandit.  Donec neque quam,
 dignissim in, mollis nec, sagittis eu, wisi.  Phasellus lacus.  Etiam lao
reet quam sed arcu.  Phasellus at dui in ligula mollis ultricies. 
 Integer placerat tristique nisl.  Praesent augue.  Fusce commodo.  
Vestibulum convallis, lorem a tempus semper, dui dui euismod elit,
 vitae placerat urna tortor vitae lacus
.  Nullam libero mauris, consequat quis, 
varius et, dictum id, arcu.  Mauris mollis tincidunt felis. 
 Aliquam feugiat tellus ut neque.  Nulla facilisis, risus a 
rhoncus fermentum, tellus tellus lacinia pur us, et dictum nunc justo sit amet elit.

There is a line gap between paragraphs. So I would like to split the file based on the line gaps, one paragraph as one single string in an array.

I tried .split("\n") and .splitlines() but both of them split based on lines but not on line gaps. Is there a way to split based on line gaps?

1 Answers

You can use regular expressions to split on 2 or more line breaks:

import re

paragraphs = re.split(r"\n{2,}", text)
len(paragraphs)
# 2

If the gap line(s) may contain white space, you can amend the regex:

paragraphs = re.split(r"\n\s*\n", text)
Related