2015-09-19 60 views

回答

2

ConfigParser的初始化劑支持strict=False參數,其允許重複。但是,就我所知,文件中沒有提及哪種價值被保留。

一種簡單的解決方案是將線轉換成字典自己;

In [1]: txt = '''path = .MyAppData 
    ...: prefer = newer 
    ...: path = Dokumente''' 

In [2]: txt.splitlines() 
Out[2]: ['path = .MyAppData', 'prefer = newer', 'path = Dokumente'] 

(分裂中的行文本後,您可能想篩選出的意見和空行。)

In [3]: [ln.split('=') for ln in txt.splitlines()] 
Out[3]: [['path ', ' .MyAppData'], ['prefer ', ' newer'], ['path ', ' Dokumente']] 

In [4]: vars = [ln.split('=') for ln in txt.splitlines()] 

(在這一點上,你可能要添加過濾器的內部列表,以便您只有長度爲2的列表,指示succesfull分裂。)

In [5]: {a.strip(): b.strip() for a, b in vars} 
Out[5]: {'path': 'Dokumente', 'prefer': 'newer'} 

在字典理解(在[5]),之後分配將覆蓋較早的。

當然,如果prefer = older,你必須扭轉字典修真前行。

相關問題