如果您想要的是简单地合并名称相同的部分(最新的一个会获胜),只需将
strict=False选项传递给构造函数(在Python
3.2中添加)。
dict.update()合并重复部分后,您可以有效地获得行为。
Config = configparser.ConfigParser(strict=False)
但是,从OP的示例数据中可以明显看出,名称相同的部分需要分开放置,以避免数据丢失。
ConfigParser将读取的部分存储在字典中,因此它不能处理具有相同名称的多个部分。幸运的是,构造函数接受一个
dict_type参数,该参数允许您指定其他类似于字典的对象。您可以使用它来支持名称相同的部分。这是一个粗略的解决方案,通过在每次看到节名称时都附加一个唯一的数字来处理节名称。
from collections import OrderedDictclass multidict(OrderedDict): _unique = 0 # class variable def __setitem__(self, key, val): if isinstance(val, dict): self._unique += 1 key += str(self._unique) OrderedDict.__setitem__(self, key, val)Config = configparser.ConfigParser(defaults=None, dict_type=multidict, strict=False)
只需少量工作,您就可以构建更清洁的解决方案。



