Как хранить правильно переносы \n в БД, чтобы python их воспринимал?

Рейтинг: 0Ответов: 1Опубликовано: 26.06.2023

При выборке предложений из БД, где используется \n для переноса строки, \n воспринимается, как просто два символа.

Если же вписать \n в код вручную , как обычно, то работает исправно.

Пример:

В столбце Vote в таблице Ex в БД хранится:

\nВарианты ответа:\n**A.** Traveled\n**B.** Traveling\n**C.** Travel\n**D.** Travels

Выборка и вставка в переменные для вывода:

    cur.execute("""SELECT Vote FROM Ex""")
    mess = cur.fetchone()

    await ctx.send(f"{mess[2]}")

На выходе получаю: \nВарианты ответа:\nA. Traveled\nB. Traveling\nC. Travel\nD. Travels

Вывожу сообщения в discord, но это к делу не имеет отношения.

Как хранить правильно переносы в БД, чтобы python их воспринимал?

Ответы

▲ 0Принят

Символы \n хранятся как обычные символы, а не как управляющие символы, обозначающие перенос строки.

При выборке из БД, \n воспринимаются просто как два символа, а не как перенос строки.

Проблему удалось решить с помощью функции replace().

Пример решения:

@bot.command()
async def test(ctx):

        cur.execute("""SELECT * FROM Ex""")
        
        f1 = cur.fetchall()
        f2= f1[0][2].replace(r"\n", "\n")

await ctx.send(f"Строка с переменной, где хранится текст с переносом строки {f2}"