Вы должны использовать
re.sub(r'(?<!\n)\n(?!\n)', ' ', text)
Шаблон (?<!\n)\n(?!\n)
соответствует символу НЧ, если ему не предшествует ((?<!\n)
) и не следует ((?!\n)
) с новой строкой.

См. Демонстрационную версию Python :
import re
text = "hi how are you\n\nhow you doing\nhow was your day"
print(re.sub(r'(?<!\n)\n(?!\n)', ' ', text))
Вывод:
hi how are you
how you doing how was your day