Benutzer-Werkzeuge

Webseiten-Werkzeuge


pyparsing

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
pyparsing [2015/04/15 06:55]
root angelegt
pyparsing [2016/05/15 11:10] (aktuell)
root [Dokuwiki-Tabelle parsen]
Zeile 1: Zeile 1:
 +====== 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: 
 +<code>
 +import pyparsing as pp
 +a=pp.OneOrMore(pp.Word(pp.alphanums + " ")+"|")
 +result=a.parseString("Erste Spalte|ZweiteSpalte|DritteSpalte|")
 +print result
 +</code>
 +Ergebnis: ParseResult-Objekt (verhält sich wie eine Liste) -> ["Erste Spalte","|","ZweiteSpalte","|","DritteSpalte",|"|"]
 +
 +====== Klassen/Parser ======
 +
 +===== Parser =====
 +
 +Pyparser kennt verschiedene Parser.
 +
 +==== parseString ====
 +
 +**Definition:**
 +
 +
 +
 +
 +
 +===== Hilfsklassen =====
 +
 +
 +
 +
 ====== Infos ====== ====== Infos ======
  
   * http://www.nmt.edu/tcc/help/pubs/pyparsing/pyparsing.pdf -> Gute Dokumentation   * http://www.nmt.edu/tcc/help/pubs/pyparsing/pyparsing.pdf -> Gute Dokumentation
 +
 +
 +
 +====== Umsetzungen ======
 +
 +===== Dokuwiki-Tabelle parsen =====
 +
 +
 +**Überschrift**:
 +
 +<code>
 +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)
 +</code>
 +
 +
 +**Inhalt**:
 +
 +<code>
 +a="|#00 |100 - 108 |104 - 116 |320 |  |"
 +parser=pp.Word(pp.alphanums+" "+"#"+"-")
 +list=pp.Suppress('|')+pp.delimitedList(parser,"|")
 +list.parseString(a)
 +</code>
 +
 +  * 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
pyparsing.1429073704.txt.gz · Zuletzt geändert: 2015/04/15 06:55 von root