pyparsing (die 2.)

01/02/2009 - 18:50 von Andreas Bruhn | Report spam
Hallo allerseits (und Hallo Rainer),

"pyparsing" scheint irgendwie nicht meine Welt zu sein. Nach meiner
ersten Frage vor einer Woche (nochmal Danke an Rainer für die Antwort)
hier das nàchste Problem.

Der untenstehende Code macht auch nicht das was er soll bzw. was ich
dachte, dass er machen sollte. [Achtung!] Bei den Testdaten ist der
zweite String eigentlich eine einzige Zeile!

Die erste Kategorie-Zeile klappt soweit noch, aber bei der zweiten
(Kat: VPE) bekomme ich die ganzen Unterkategorien (SW01, EF01, WT01)
nicht zurück. :-(

Ich dachte eigentlich mit der rekursiven Definition von 'cat' hàtte
ich es, aber ... :-( 'cat2' funktioniert auch nicht, weil bei
nestedExpr die opener bzw. closer mittels Suppress nicht in dem
Ergebnis erscheinen und damit die Auswertung der Attribute entfàllt.

Ich werde mich nachher mal mit 'SAX' an dem ganzen Kram versuchen.



#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyparsing import *

tasks_s, tasks_e = makeXMLTags('tasks')
task_s, task_e = makeXMLTags('task')
effort_s, effort_e = makeXMLTags('effort')
category_s, category_e = makeXMLTags('category')

cat = Forward()
cat << (category_s + Optional(cat + category_e))
#cat2 = nestedExpr(opener=category_s, closer=Optional(category_e),
content=cat)


def main():
daten = ('<category subject="Python"/>',
'<category subject="VPE"><category
subject="SW01"/><category subject="EF01"/><category
subject="WT01"/></category>'
)
for d in daten:
print '-'*35
x = cat.parseString(d)
print x
print
print x.asDict()
print

if __name__ == '__main__':
main()
 

Lesen sie die antworten

#1 Volker Birk
01/02/2009 - 19:34 | Warnen spam
Andreas Bruhn wrote:
Der untenstehende Code macht auch nicht das was er soll bzw. was ich
dachte, dass er machen sollte.



Was soll er denn machen? Was hast Du vor?

Viele Grüsse,
VB.
Bitte beachten Sie auch die Rückseite dieses Schreibens!

Ähnliche fragen