Есть скрипт .py, который получив запрос от пользователя Т-бота, обработав его в OWM и сформировав текстовое сообщение из разных блоков отправляет обратно в Т-бота для пользователя.Теперь о проблеме.
Часть текстовой информации при помощи configparser парсится из файла .ini (некой текстовой библиотеке с набором фрагментов текста и параметр-ключ).
В текстах обозначены переносы строк при помощи escape-последовательность "\n".
В итоге в Т-бота возвращается текст без переносов строка, но с прописанным "\n".
Python:
# прочии импорты
from pyowm.commons.exceptions import NotFoundError
import configparser
config = configparser.ConfigParser()
config.read(data_bot_file)
error_message = config.get('Error_data', 'sorry')
# Класс
# метод
def send_echo(message):
try:
observation = self.get_weather_data(message.text) # Получение данных о погоде
except NotFoundError:
self.send_message(message.chat.id, is_error=True) # Обработка ошибки, если город не найден
return
except Exception:
logging.exception(error_later_message) # Логирование исключения
self.send_message(message.chat.id, error_later_message)
return
answer = self.format_weather_data(observation, message.text)
self.send_message(message.chat.id, answer) # Отправка сообщения с информацией о погоде
# прочий код
def send_message(self, chat_id, message=None, is_error=False): # отправка сообщения в зависимости от того найден город или нет.
if is_error:
global error_message
self.bot.send_message(chat_id, error_message)
else:
self.bot.send_message(chat_id, message)
# прочий код
Python:
[Error_data]
sorry = Не удается обнаружить данные для указанного города. \nПопробуйте указать другое название.
later = Произошла ошибка при получении данных . Попробуйте позже.
Python:
# Пробовал так:
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
Если текст брать не из конфига а из переменной в самом скрипте, и дальше проделывать с ним все те же манипуляции, то на выходе мы получаем правильное форматирование.
Проблема появляется, когда переменную меняем на данные из конфига.