Задать вопрос
Buddy_Bro
@Buddy_Bro

Как реализовать escape-последовательность в файле конфигурации.ini?

Есть скрипт .py, который получив запрос от пользователя Т-бота, обработав его в OWM и сформировав текстовое сообщение из разных блоков отправляет обратно в Т-бота для пользователя.
Теперь о проблеме.
Часть текстовой информации при помощи configparser парсится из файла .ini (некой текстовой библиотеке с набором фрагментов текста и параметр-ключ).
В текстах обозначены переносы строк при помощи escape-последовательность "\n".
В итоге в Т-бота возвращается текст без переносов строка, но с прописанным "\n".
# Пробовал парсить так:
error_message = config.get('Error_data', 'sorry').encode().decode('unicode_escape')
# и так:
error_message = codecs.decode(config.get('Error_data', 'sorry'), 'unicode_escape')
# и так:
error_message = configparser.unescape(config.get('Error_data', 'sorry'))
# и вот так:
error_message = config.get('Error_data', 'sorry').encode().decode('utf-8')
# и этак:
config.read('my_file.ini', encoding='utf-8')


Приветствуются любые идеи!
Может как то по другому возможно обозначить перенос строки в файле .ini?
Или обработать уже полученный текст. или сформированный перед отправкой..
Но хотелось бы минимизировать код. В идеале если можно сделать что-то на уровне ini

PS
Если текст брать не из конфига а из переменной в самом скрипте, и дальше проделывать с ним все те же манипуляции, то на выходе мы получаем правильное форматирование.
Проблема появляется, когда переменную меняем на данные из конфига.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Вариант 1. В доках на configparser написан пример синтаксиса для многострочного строкового значения. Сформируй исходное значение в файле корректно, и парсер выдаст то, что нужно, без дополнительных прибабахов.

Вариант 2. error_message = error_message.replace(r'\n', '\n')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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