Hi
Ich habe eine Liste von Servern, die leider immer anders aussieht.
Für jeden Server stehen verschiedene Parameter auf einzelnen Zeilen, im Stil von key=value.
Jedoch ist das Trennzeichen manchmal ein Doppelpunkt oder die Keys heisst nicht immer genau gleich, oder als value ist anstatt ein Wert z.B. mehrere Werte mit Komma getrennt oder sogar user1 ===> user10 für 10 user.
Mit welchen Tools löst man so etwas am einfachsten/schönsten?
Mit regulären Ausdrücken, split und co oder einem richtigen Parser?
Was gibt es sonst für Tools für eigentlich human readable Data
Hab jetzt mit split und co angefangen, jedoch wird das Aufwendig und ich bekomm das Gefühl, dass etwas anderes einfacher wäre.
Gruss
Fehlertoleranter Parser
Das hängt davon ab, was "üblicherweise" kommt. Unabhängig von python hab ich durch meine Arbeit häufiger ähnliche Probleme kennengelernt, und mein Fazit ist: es ist ein Kampf gegen Windmühlen. Entweder, man hat ein wohldefiniertes Format, dann kann man klar sagen, ob re, split, etc das richtige ist, oder man hat kein solches, dann muss man Strenggenommen bei jeder neuen Sendung überprüfen, ob das neue Format mit deinen Vermutungen übereinstimmt, also: du hast jedesmal handarbeit und die Automatisierung ist überflüssig.rayo hat geschrieben:Mit welchen Tools löst man so etwas am einfachsten/schönsten?
Mit regulären Ausdrücken, split und co oder einem richtigen Parser?
Das Problem ist hier eher nicht-informatischer Natur: Wenn du diese Daten bekommen kannst, hat doch irgendjemand scheinbar ein Interesse an der Veröffentlichung. Wenn der ein Interesse hat, sollte er auch ein Interesse daran haben, dass die Daten verstanden werden können, und somit ein Format definieren können.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Meine Idee, mal aus der Hüfte geschossen: einen monadic combinator parser, Pysec. Könnte natürlich auch totaler Overkill sein, aber einen Parser aus mehreren kleineren Parsern zusammenzusetzen ist sicherlich angenehm.
Oder du kannst auch einfach in einem handgeschriebenen Parser ausreichend viele möglichst Fehlertolerante Reguläre ausdrücke verwenden und dann gegebenfalls noch einen zusätzlichen Lauf der weitere Reparaturen ausführt.
Oder du kannst auch einfach in einem handgeschriebenen Parser ausreichend viele möglichst Fehlertolerante Reguläre ausdrücke verwenden und dann gegebenfalls noch einen zusätzlichen Lauf der weitere Reparaturen ausführt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ernsthaft: es bringt nichts, das von hinten anzufangen.
Laut deiner Aussage kann man sich weder darauf verlassen, dass die Keys einen festen Namen haben, noch darauf, dass der Trenner fest ist, noch dass die Values das sind, wonach sie aussehen.
Schreib doch erst mal (in BNF oder so) auf, was du parsen willst, sobald du das Widerspruchsfrei hinbekommst kann man entscheiden, welche Technologie da die beste ist, oder ob es nicht einfacher ist, einen Studenten zum Listenabtippen zu bezahlen.
Laut deiner Aussage kann man sich weder darauf verlassen, dass die Keys einen festen Namen haben, noch darauf, dass der Trenner fest ist, noch dass die Values das sind, wonach sie aussehen.
Schreib doch erst mal (in BNF oder so) auf, was du parsen willst, sobald du das Widerspruchsfrei hinbekommst kann man entscheiden, welche Technologie da die beste ist, oder ob es nicht einfacher ist, einen Studenten zum Listenabtippen zu bezahlen.
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
So wie es von allen klingt, bleib ich da wohl bei der split und co sache, da ich da am meisten "Logik" einbauen kann was nun die aktuelle Zeile wirklich bedeutet.
Ich denke ich werde es so machen, dass ich für die aktuelle Liste das mal erstelle und wenn er bei einem Eintrag fehlschlägt mir eine Mail schickt und ich dann mein Script erweitern kann damit auch das Format geht. So krieg ich dann hoffentlich mal die meisten Formate durch den Parser.
Danke schonmal für die aufgelisteten Tools.
Gruss
Ich denke ich werde es so machen, dass ich für die aktuelle Liste das mal erstelle und wenn er bei einem Eintrag fehlschlägt mir eine Mail schickt und ich dann mein Script erweitern kann damit auch das Format geht. So krieg ich dann hoffentlich mal die meisten Formate durch den Parser.
Danke schonmal für die aufgelisteten Tools.
Gruss
Kannst du denn feststellen, obs schiefgeht? Aus deinem Beispiel: kannst du erkennen, dass der wert user10 falsch, und stattdessen 10 user gemeint ist?rayo hat geschrieben:Ich denke ich werde es so machen, dass ich für die aktuelle Liste das mal erstelle und wenn er bei einem Eintrag fehlschlägt mir eine Mail schickt
Offensichtliche Syntaxfehler halte ich gar nicht mal so für ein Problem wie mehrdeutigkeiten.
Ist
"key=<value>" "key" "=<" "value>"
oder "key" "=" "<value>"?