Вывод списка python в одном сообщении выполнив перенос на новую строку определенных элементов списка

Есть телеграм бот который я начал писать для записи тренировок. Есть функция https://github.com/nikolaynovikov1989/MyTrainBot/blob/release/server.py#L143 Которая берет каждое упражнение из списка all_list

all_list=["жим лежа","жим гантелей стоя","жим гантелей сидя","подьем ног","подъем ног в висе","подъем гантелей на бицепс","французский жим","подьем штанги на бицепс","выпады","скручивания","подтягивания","становая","приседания с гантелями","гиперэкстензия","разведение гантелей лежа","разведение гантелей стоя","разведение гантелей в стороны","жим гантелей лежа","жим гантелей лежа на наклонной скамье","приседания со штангой","разгибание рук с гантелями в наклоне","блок на трицепс","тяга верхнего блока","жим штанги сидя из-за головы","наклоны с гантелями","подъем на носки","жим ногами","жим гантелей сидя 90","жим гантелей сидя 60","жим гантелей сидя 30","жим гантелей сидя 45"]

получает по нему из базы максимальные значения и добавляет ее в список all_record который я вывожу в сообщении в телеграм

def records(exersise_codename):
  con = sqlite3.connect("db/db.db")
  cur = con.cursor()
  res = cur.execute("SELECT exersisename from exercises where aliases like ?", ('%' + exersise_codename + '%',))
  base_result = res.fetchone()
  codename = base_result[0]
  res= cur.execute("SELECT max(weight),created from workout where exersise_codename like ?",(codename,)).fetchone()
  return res

async def record(update: Update, context: ContextTypes.DEFAULT_TYPE):
    all_record = []
    for i in all_list:
        record = records(i)
        rec_weight=(record[0])
        rec_date=(record[1])
        all_record.append(i)
        all_record.append(rec_weight)
        all_record.append(rec_date)
await update.message.reply_text( f"{all_record}" )

Сейчас это выглядит так

введите сюда описание изображения

Никак не могу понять как вывести в одном сообщении этот список вот таким образом как на фото введите сюда описание изображения

То есть требуется отобразить список в одном сообщении выполнив перенос строк после определенного элемента списка(в данном случае после каждого третьего элемента из списка)


Ответы (1 шт):

Автор решения: Sergei Kirjanov
  1. Список было бы удобней делать не плоским, а списком структур:
[
{ "title": "жим лежа", "count": 50, "date": "2015-09-23" },
{ "title": "подъем ног" ...
]
  1. Разобраться, какой формат сообщения -- текст, HTML и т. п.
  2. Разобраться, как преобразовать список в этот формат перед посылкой -- шаблон, map/join и т. п.

Например: all_record.append({"title": i, "weight": rec_weight, "date": rec_date}) ... reply_text("\n".join(f'{r["title"]} | {r["weight"]} | {r["date"]}' for r in all_records))

→ Ссылка