über mehrere Zeilen hinweg matchen

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
movies1978
User
Beiträge: 15
Registriert: Montag 13. Februar 2006, 13:25

Donnerstag 14. September 2006, 12:44

Ich will in einer Datei eine Struktur erkennen, welche ungefähr folgende Struktur hat.

<script methodname="xyz">
<author></author>
<contact></contact>
<description>fdfdsf</description>
<targetdevice>none</targetdevice>
<comments></comments>
</script>

Kann ich zeilenübergreifend mit dem re modul mir den ganzen Teil als match ausspucken lassen.
Ich habe einiges versucht, aber bin nicht sehr weit gekommen. Hat einer eine Idee.

Mathias
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Donnerstag 14. September 2006, 15:26

Jupp, ich glaube mit XML kännte das gehen (denke ich mal). Oder du schreibst dir einen eigenen Parser.

Im Prinzip ist das sogar noch recht Simpel die Struktur. Hab das schon für eigene Scriptsprachen eine Parser geschrieben das um einiges komplexer war. Also soll heißen: wenn du mir die genaue Struktur nennt und worin das ganze gespeichert werden soll bastele ich mall was zusammen.

Aber schau mal erstmal ob das mit nen XML-Parser geht. Ich glaube für Python gibt es da was für XML…


lg

EDIT: wo sollen die geparsten Daten nachher landen? SQLite Datenbank?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 14. September 2006, 15:48

movies1978 hat geschrieben:Ich will in einer Datei eine Struktur erkennen, welche ungefähr folgende Struktur hat.
Was meinst du mit Struktur erkennen? Die Werte auslesen? Das geht mit einem SAX-Parser, einem DOM-Parser, BeautifulSoap, ElementTree viel einfacher als mit einem Regulären Ausdruck.
movies1978 hat geschrieben:Kann ich zeilenübergreifend mit dem re modul mir den ganzen Teil als match ausspucken lassen.
Geht doch, angenommen dein Code ist im String s enthalten:

Code: Alles auswählen

re.findall(r'<script.*</script>', s, re.DOTALL)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten