Ну смотри внимательно на структуру.
Сделаем переменную
all_lessons = []
, куда будем складывать результат.
Верхняя структура данных - кортеж (tuple). Элементы кортежа - уроки (идут по вертикали).
Т.е. циклом вида
for lesson in data:
можно будет перебрать уроки.
Теперь смотрим отдельный урок:
[
[['6']], # индекс 0 - номер урока (почему-то в двух списках)
[], #индекс 1 - понедельник
[['Физкультура'], ['Храпов О.Е.'], ['12:05 - 12:45'], ['216']], #индекс 2 - вторник
[['Иностранный ...'], ['Севостьянова Е....'], ['12:05 - 12:45'], ['047']], #индекс 3 - среда
[['Физкультура'], ['Храпов О.Е.'], ['12:05 - 12:45'], ['216']], #индекс 4 - четверг
[], #индекс 5 - пятница
[], #индекс 6 - суббота?
[], #индекс 7 - ?
[] #индекс 8 - ?
],
Отсюда можно сделать вывод, что номер урока можно достать так:
lesson[0][0]
.
Далее, идёт цикл по дням недели
for day_number in range(1, 7): #1 - понедельник
lesson_per_day = lesson[day_number]
Теперь рассмотрим, что попадёт в lesson_per_day. Тут есть три варианта:
1. пустой список, урока нет
2. В списке 4 элемента, один и тот же урок
3. В списке 8 элементов, это или мигающее занятие (по неделям), или занятие по подгруппам (тебе виднее).
[
['Технология'], #0 - что
['Бирюкова Е.Н.'], # 1 - кто
['16:15 - 16:55'], # 2 - когда
['133'], # 3 - где
['Технология'], #4 - что (альтернатива)
['Горбунова Е.П.'], # 5 - кто (альтернатива)
['16:15 - 16:55'], # 6 - когда (альтернатива)
['048'] # 7 - где (альтернатива)
]
Отсюда:
if len(lesson_per_day) == 4: # есть одно занятие?
all_lessons.append({
'number': int(lesson[0][0]),
'day': day_number,
'subject': lesson_per_day[0],
'teacher': lesson_per_day[1],
'time': lesson_per_day[2],
'room': lesson_per_day[3],
'type': '' # занятие не над/под чертой
})
elif len(lesson_per_day) == 8: # есть два занятия?
all_lessons.append({
'number': int(lesson[0][0]),
'day': day_number,
'subject': lesson_per_day[0],
'teacher': lesson_per_day[1],
'time': lesson_per_day[2],
'room': lesson_per_day[3],
'type': 'над чертой'
})
all_lessons.append({
'number': int(lesson[0][0]),
'day': day_number,
'subject': lesson_per_day[4],
'teacher': lesson_per_day[5],
'time': lesson_per_day[6],
'room': lesson_per_day[7],
'type': 'под чертой'
})
Собери это вместе и в итоге получишь список словарей вида:
[
{'number': 6, 'daynumber': 1, 'subject': 'Физкультура', 'teacher': 'Храпов О.Е.', 'time': '12:05 - 12:45', 'room': '216', type: ''},
{..................},
.....................
]
С этим списком уже делай что тебе надо: в базу сохраняй, отсеивай по number/daynumber, выводи... С ним будет проще работать.