Konfigurationsdatei mit dem gleichen Abschnittsnamen in Python parsen

8

Ich versuche eine Datei wie:

zu parsen %Vor%

Ich benutze ConfigParser in Python, aber wenn ich die Datei lese:

%Vor%

Ich habe einen Fehler:

%Vor%

Wie kann ich diese Datei analysieren? Gibt es noch eine andere Bibliothek? (bevorzugt für python3)

    
ExyTab 26.03.2012, 16:34
quelle

4 Antworten

10

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.

%Vor%

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.

%Vor%

Mit ein wenig Arbeit sollten Sie in der Lage sein, eine sauberere Lösung zu konstruieren.

    
alexis 27.03.2012, 11:36
quelle
2

Auf der neuesten Python gibt es eine Option, die tun kann, was Sie wollen: ConfigParser(strict=True)

Cf: Ссылка

    
Candide Guevara Marino 21.04.2017 18:27
quelle
1

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.

    
gecco 27.03.2012 11:14
quelle
0

" 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%     
qtmspin 24.03.2017 14:20
quelle

Tags und Links