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}!
>>>