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
,你必須扭轉字典修真前行。