Wenn Sie einfach Abschnitte mit identischem Namen zusammenführen möchten (der letzte gewinnt), übergeben Sie einfach die Option strict=False
an den Konstruktor (in Python 3.2 hinzugefügt).
Sie erhalten effektiv dict.update()
Verhalten, wenn die doppelten Abschnitte zusammengeführt werden.
Aus den Beispieldaten des OP geht jedoch eindeutig hervor, dass Abschnitte mit identischem Namen getrennt gehalten werden müssen, um Datenverluste zu vermeiden. ConfigParser
speichert die Abschnitte, die es in einem Wörterbuch liest, sodass es nicht mehrere Abschnitte mit demselben Namen verarbeiten kann. Zum Glück akzeptiert der Konstruktor ein Argument dict_type
, mit dem Sie ein anderes Dictionary-ähnliches Objekt angeben können. Sie können das verwenden, um identisch benannte Abschnitte zu unterstützen. Hier ist eine grobe Lösung, die die Sektionsnamen durch Anhängen einer eindeutigen Nummer verändert, sobald ein Sektionsname zuvor gesehen wurde.
Mit ein wenig Arbeit sollten Sie in der Lage sein, eine sauberere Lösung zu konstruieren.
Auf der neuesten Python gibt es eine Option, die tun kann, was Sie wollen:
ConfigParser(strict=True)
Cf: Ссылка
Leider ist das Format der mitgelieferten INI-Datei nicht den Standards entsprechend. Der Name eines Abschnitts muss im Dokument eindeutig sein.
Wenn Sie das Dateiformat ändern können (ich habe bereits gelesen, dass Sie das nicht können, aber der Vollständigkeit halber), dann wäre eine Lösung wie diese angebracht:
%Vor%Wenn Sie das Dateiformat wirklich nicht wechseln können, befürchte ich, dass Sie die Konfigurationsdatei nur manuell parsen können.
" Wenn Sie von einem RFC-Standard abweichen und Ihr eigenes Konfigurationsformat erstellen, müssen Sie Ihren eigenen Parser schreiben. "Dies Ссылка hat für mich gearbeitet. Ich habe ein paar kleine Änderungen vorgenommen. ** Die Formatierung ist beim Posten nicht richtig erschienen.
%Vor%Tags und Links python python-3.x configparser