regular expression parser...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
template
User
Beiträge: 29
Registriert: Mittwoch 21. November 2007, 09:44

Hallo,

also ich habe mich in die re klasse in python verliebt und finde das Sie fast schon die funktionalität mitbringt um Sie als komplett parametrisierbaren Parser zu misbrauchen. Mir schwebt da folgender Input vor:

Code: Alles auswählen

<tr><td>val 1</td><td>val 2</td><td>val 3</td></tr>
und folgender Ausdruck dazu:

Code: Alles auswählen

(<tr>(<td>[^<]+?</td>)+</tr>)
Jetzt wäre es super wenn man folgendes Ergebnis bekommen könnte:

Code: Alles auswählen

('<tr><td>val 1</td><td>val 2</td><td>val 3</td></tr>',
  (  'val 1',
     'val 2',
     'val 3'
  )
)
Dann könnte man eigentlich in einer Regular Expression sehr komplexe Dokumentstrukturen beschreiben und diese auf einen Schlag Parsen lassen.

Mit re.findall geht das Leider nicht. Gibt es vielleicht schon irgendwas integriert, was sowas könnte oder eine passende Bibliothek? Oder hat jemand einen besseren Ansatz für diese Arten von Problemen?

vielen dank im voraus
template
windner
User
Beiträge: 76
Registriert: Freitag 19. Oktober 2007, 11:25

Oder hat jemand einen besseren Ansatz für diese Arten von Problemen?
XML-Parser?
template
User
Beiträge: 29
Registriert: Mittwoch 21. November 2007, 09:44

okay, html war vielleicht kein passendes Beispiel;) Nein, ich meinte zum parsen einer beliebigen Dokumentstruktur also andere Textbasierte formate oder irgend etwas in der Richtung.
BlackJack

Da nehme ich lieber einen richtigen Parser und keine kryptischen regulären Ausdrücke die man nach zwei Wochen selbst nicht mehr versteht und die letztendlich dann doch nicht mächtig genug sind um verschachtelte Strukturen zu verarbeiten. Mein Lieblingsmodul in der Richtung ist PyParsing.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde auch eher einen Parser verwenden. Pyparsing ist ein guter Kandidat für so etwas, siehe aber auch diesen Post.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten