====== 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