====== Parser ====== * Die Parser sind Methoden die nahezu alle Klassen in PyParser implementiert haben * man kann mehrere Zeichenketten und PyParser-Obejkte hintereinander schreiben -> zusammen sind sie dann ein Objekt einer PyParsing-Klasse * dieses Zeichenkette-Pyparsing-Objekt Mischmasch wird dann als Muster auf den zu parsenden String gelegt * Verkettung kann u.a. per "+" erfolgen -> "logisch und" ===== parseString ===== * Parst eine übergebene Zeichenkette anhand des vorher definierten Musters/Patterns * gibt ein Objekt vom Typ ParseResults zurück welches die einzelnen Elemente/Felder als Liste enthält Syntax: Objekt.parseString(//zuparsenderString//) Beispiel: import pyparsing as pp a=pp.OneOrMore(pp.Word(pp.alphanums + " ")+"|") result=a.parseString("Erste Spalte|ZweiteSpalte|DritteSpalte|") print result Ergebnis: ParseResult-Objekt (verhält sich wie eine Liste) -> ["Erste Spalte","|","ZweiteSpalte","|","DritteSpalte",|"|"] ====== Klassen/Parser ====== ===== Parser ===== Pyparser kennt verschiedene Parser. ==== parseString ==== **Definition:** ===== Hilfsklassen ===== ====== Infos ====== * http://www.nmt.edu/tcc/help/pubs/pyparsing/pyparsing.pdf -> Gute Dokumentation ====== Umsetzungen ====== ===== Dokuwiki-Tabelle parsen ===== **Überschrift**: a="^Größe ^Hufbreite mm ^Huflänge mm ^Gewicht g ^Besonderheiten ^" parser=pp.Word(pp.alphanums+" "+"#"+"-"+"ä"+"ü"+"ö") list=pp.Suppress('^')+pp.delimitedList(parser,"^") list.parseString(a) **Inhalt**: a="|#00 |100 - 108 |104 - 116 |320 | |" parser=pp.Word(pp.alphanums+" "+"#"+"-") list=pp.Suppress('|')+pp.delimitedList(parser,"|") list.parseString(a) * Variable a enthält die zu parsende Zeile * parser definiert welche Zeichen als ein Wort betrachtet werden - das müsste eventuell erweitert werden, da nicht alle Sonderzeichen und ggf. Unicode-Zeichen abgedeckt sind * list enthält den eigentlichen Parser - bestehend aus Supress welches den führenden "|" der Tabelle unterdrückt (da delimitedList einen Delimiter nicht als erstes Zeichen erwartet) und der Funktion DelimitedList welche anahnd eines delimiters/Trenners (in diesem Fall "|") eine Zeichenkette in einzelne Felder aufspaltet und die Felder zwischen den Trennern ("|") jeweils als ein Element einer Liste speichert