2013-10-01 5 views
0

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

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' Однако, если я жестко задал эту строку (прокомментированную строку) в моей программе, она отображается как следует.

ответ

0

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

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

[NOTIFICATIONS] 
test1 = Hello, 
     {username}! 

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

>>> print(cfg.get('NOTIFICATIONS', 'test1')) 
Hello, 
{username}! 
>>> 
+0

О, ничего себе. Это так просто и легко. Большое спасибо. – user2772570