Есть ощущение, что задача выросла из ряда ошибочных решений в части получения исходных данных и процесса обработки данных. Ну, то-есть, возможно, что данные в исходнике уже были разделены, а их сгребли в одну строку и теперь мужественно пытаются разделить; также сомнительно использование получившихся элементов списка в виде строк - опять их придется делить? Или что дальше-то? Может, надо было по-другому делить? В общем, есть вопросы по стратегии...
Что касается тактики... Ну, к примеру:
при помощи regex ищем шаблон из кавычки и даты с запятой в конце, добавляем в строку перед этим шаблоном спецсимвол, потом делаем split по этому символу, и подчищаем пустые элементы списка.
import re
def split_by_pattern(string, pattern):
return list(filter(None, re.sub(pattern, r'@@\1', string).split('@@')))
if __name__ == '__main__':
data = '''28.03.22, ПН
08:30 - 10:00 Предмет_1
10:10 - 11:40 Предмет_2
29.03.22, ВТ
08:30 - 10:00 Предмет_1
10:10 - 11:40 Предмет_2'''
my_pattern = r'(([\d]{2}\.){2}[\d]{2})'
print(split_by_pattern(data, my_pattern))
Это не идеально, но для приведенного примера с учетом сохранения формата должно работать.