python gi.repository Notify и новая строка "\n"

Я не могу отобразить новую строку в gi.repository Notification. Он работает, когда я использую строковую константу в программе, но не работает, когда я читаю строку из файла конфигурации с помощью класса ConfigParser.

test.ini

[NOTIFICATIONS]
test1 = Hello,\n{username}!

test.py:

import ConfigParser
from gi.repository import Notify

# notifyText = "Hello, {username}" - will work
data = {'username': 'sudo', 'test': 'test'}


if __name__ == '__main__':
    cfg = ConfigParser.ConfigParser()                              
    cfg.read('test.ini')
    notifyText = cfg.get('NOTIFICATIONS', 'test1').format(**data)

    Notify.init('Test')
    notification = Notify.Notification('Test', notifyText)
    notification.show()

Вывод текущей программы будет: "Hello \ nsudo!" Однако, если я жестко закодировал эту строку (закомментированную строку) в моей программе, то она отображается так, как должна.

1 ответ

Решение

\n не обрабатывается специально, когда файл конфигурации читается ConfigParserэто интерпретируется как литеральное \n,

Если вы хотите новую строку, просто продолжите строку параметров в следующей строке:

[NOTIFICATIONS]
test1 = Hello,
        {username}!

Каждая строка, начинающаяся с пробела, рассматривается как продолжение предыдущей строки, пробел будет удален, но новая строка останется:

>>> print(cfg.get('NOTIFICATIONS', 'test1'))
Hello,
{username}!
>>> 
Другие вопросы по тегам