@shywhywalker

Как вывести в чат боте входные данные в сообщении?

Как вывести данные в сообщения , если есть возможность приложить код.
И так у меня есть метод который парсит страницу дневника ру:
spoiler
634c056fed526282495169.png
Я вывожу в консоль данные и приходит это:
spoiler
([[['1']], [], [], [], [], [], [], [], []],
 [[['2']], [], [], [], [], [], [], [], []],
 [[['3']], [], [], [], [], [], [], [], []],
 [[['4']], [], [], [], [], [], [], [], []],
 [[['5']], [], [], [], [], [], [], [], []],
 [[['6']],
  [],
  [['Физкультура'], ['Храпов О.Е.'], ['12:05 - 12:45'], ['216']],
  [['Иностранный ...'], ['Севостьянова Е....'], ['12:05 - 12:45'], ['047']],
  [['Физкультура'], ['Храпов О.Е.'], ['12:05 - 12:45'], ['216']],
  [],
  [],
  [],
  []],
 [[['7']],
  [['История Росс...'], ['Попова Е.Е.'], ['12:55 - 13:35'], ['210']],
  [['Обществознан...'], ['Попова Е.Е.'], ['12:55 - 13:35'], ['210']],
  [['Информатика'], ['Мищенко Н.В.'], ['12:55 - 13:35'], ['215']],
  [['Русский язык'], ['Миронова Т.А.'], ['12:55 - 13:35'], ['212']],
  [],
  [],
  [],
  []],
 [[['8']],
  [['История Росс...'], ['Попова Е.Е.'], ['13:45 - 14:25'], ['210']],
  [['Геометрия'], ['Родионова С.В.'], ['13:45 - 14:25'], ['222']],
  [['Биология'], ['Васина Н.Н.'], ['13:45 - 14:25'], ['221']],
  [['Иностранный ...'],
   ['Крайнова О.А.'],
   ['13:45 - 14:25'],
   ['137'],
   ['Информатика'],
   ['Мищенко Н.В.'],
   ['13:45 - 14:25'],
   ['215']],
  [['Геометрия'], ['Родионова С.В.'], ['13:45 - 14:25'], ['222']],
  [],
  [],
  []],
 [[['9']],
  [['Алгебра'], ['Родионова С.В.'], ['14:35 - 15:15'], ['222']],
  [['Музыка'], ['Асланян Л.С.'], ['14:35 - 15:15'], ['222']],
  [['Химия'], ['Гриценко С.Д.'], ['14:35 - 15:15'], ['307']],
  [['Русский язык'], ['Миронова Т.А.'], ['14:35 - 15:15'], ['212']],
  [['Биология'], ['Васина Н.Н.'], ['14:35 - 15:15'], ['221']],
  [],
  [],
  []],
 [[['10']],
  [['География'], ['Сафонова Т.Е.'], ['15:25 - 16:05'], ['305']],
  [['Иностранный ...'],
   ['Крайнова О.А.'],
   ['15:25 - 16:05'],
   ['137'],
   ['Иностранный ...'],
   ['Севостьянова Е....'],
   ['15:25 - 16:05'],
   ['047']],
  [['Русский язык'], ['Миронова Т.А.'], ['15:25 - 16:05'], ['212']],
  [['Технология'],
   ['Бирюкова Е.Н.'],
   ['15:25 - 16:05'],
   ['133'],
   ['Технология'],
   ['Горбунова Е.П.'],
   ['15:25 - 16:05'],
   ['048']],
  [['Русский язык'], ['Миронова Т.А.'], ['15:25 - 16:05'], ['212']],
  [],
  [],
  []],
 [[['11']],
  [['Иностранный ...'],
   ['Крайнова О.А.'],
   ['16:15 - 16:55'],
   ['137'],
   ['Иностранный ...'],
   ['Севостьянова Е....'],
   ['16:15 - 16:55'],
   ['047']],
  [['Алгебра'], ['Родионова С.В.'], ['16:15 - 16:55'], ['222']],
  [['Литература'], ['Миронова Т.А.'], ['16:15 - 16:55'], ['212']],
  [['Технология'],
   ['Бирюкова Е.Н.'],
   ['16:15 - 16:55'],
   ['133'],
   ['Технология'],
   ['Горбунова Е.П.'],
   ['16:15 - 16:55'],
   ['048']],
  [['Литература'], ['Миронова Т.А.'], ['16:15 - 16:55'], ['212']],
  [],
  [],
  []],
 [[['12']],
  [['Алгебра'], ['Родионова С.В.'], ['17:05 - 17:45'], ['222']],
  [['Физика'], ['Павлова Е.В.'], ['17:05 - 17:45'], ['219']],
  [['География'], ['Сафонова Т.Е.'], ['17:05 - 17:45'], ['305']],
  [['Физика'], ['Павлова Е.В.'], ['17:05 - 17:45'], ['219']],
  [['ИЗО'], ['Саянова К.В.'], ['17:05 - 17:45'], ['305']],
  [],
  [],
  []])


Я пишу на telebot и мне нужно чтобы бот отправлял сообщение с названием предмета, кто ведет его, время, кабинет. То есть все данные должны быть использованы.
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну смотри внимательно на структуру.
Сделаем переменную 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, выводи... С ним будет проще работать.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы