Aveyloff
@Aveyloff

Каким методом сделать строку в спсиок?

Есть строка:

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


Каждый элемент в списке - это один день.

Напр.
["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"]
  • Вопрос задан
  • 66 просмотров
Решения вопроса 2
iggor-markin
@iggor-markin
Python Developer
Похоже, что здесь подойдёт re.split().
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Есть ощущение, что задача выросла из ряда ошибочных решений в части получения исходных данных и процесса обработки данных. Ну, то-есть, возможно, что данные в исходнике уже были разделены, а их сгребли в одну строку и теперь мужественно пытаются разделить; также сомнительно использование получившихся элементов списка в виде строк - опять их придется делить? Или что дальше-то? Может, надо было по-другому делить? В общем, есть вопросы по стратегии...
Что касается тактики... Ну, к примеру:
при помощи 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))


Это не идеально, но для приведенного примера с учетом сохранения формата должно работать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы