Seite 1 von 1

Reguläre Ausdrücke

Verfasst: Freitag 9. Juli 2004, 10:03
von Hanman
Hallo,
ich möchte in folgendem XML Ausdruck den Inhalt ersetzen :

<artikel>blah</artikel>

Ich habe das so gelöst :

Code: Alles auswählen

car = re.compile(r'<artikel>(.*?)</artikel>''')
t = car.sub(art, oef)
Dies funktioniert allerdings, kann es sein das ich den falschen regulären Ausruck verwende?

Gruß Hanman

Verfasst: Freitag 9. Juli 2004, 11:52
von Milan
Hi. Falsch kann nur was sein, wenn man etwas bekommt, was man nicht erwartet hat. Nun ist es hier wohl offensichtlich, da du sagst, dass du den Inhalt ersetzen willst. Allerdings musst du das sonst weietr beschreiben.

Ich denk mal du bekommst bei "<artikel>blah</artikel>" danach sowas hier raus "lalala", also ohne die artikel-Tags? Wenn dem so ist, musst du die einfach noch mit beim sub dazusetzen.

Wenn nicht, beschreib mal das falsche :wink:

Verfasst: Freitag 9. Juli 2004, 11:54
von Hanman
Ich möchte eben das <artikel>blah</artikel> aus einer datei auslesen und dann das "blah" ersetzen die tags sollen aber weiterhin bestehen bleiben!

Gruß Hanman

Verfasst: Freitag 9. Juli 2004, 12:06
von Milan
Hi. Das dachte ich mir schon, nur hba ich keinen Plan, was du mit "den falschen regulären Ausruck" gemeint haben könntest.

Du musst höchstens beim ersetzen sagen, dass auch wieder die <artikel> -Tags reinkommen sollen, denn momentan werden die vollständig mitersetzt:

Code: Alles auswählen

car = re.compile(r'''<artikel>(.*?)</artikel>''',re.I) 
t = car.sub(art, "<artikel>%s</artikel>" % neuer_inhalt)
So richtig?

Verfasst: Freitag 9. Juli 2004, 14:39
von fs111
Wieso willst Du das zu Fuß über RE lösen, und nimmst nicht einen XML-Parser und arbeitest mit DOM? Damit geht das schneller und einfacher, zumindest was dei Umsetzung angeht. Wie das genau geht, kannst Du hier nachlesen: http://pyxml.sourceforge.net/topics/docs.html

fs111

Verfasst: Montag 12. Juli 2004, 08:09
von Hanman
Ok ich hab die beiden Argumente vertauscht ;)

Ich muss es leider so lösen, da ich es als CGi laufen lassen möchte, ich aber keine Rootrechte auf dem Server hab um zusätzliche Module zu installieren.

Gruß Hanman

Verfasst: Montag 12. Juli 2004, 08:58
von Milan
Hi. Ich hab mich noch nicht näher mit DOM unter Python beschäftigt, aber im Package xml gibts ein Subpackage dom. Mit dem kannst du sicher auch was anfangen, da es zur Standartlibary gehört.

Verfasst: Montag 12. Juli 2004, 10:41
von fs111
Das ist aber erst seit 2.3 dabei, oder? Ich meine dass PyXML bei 2.2 noch nicht zu Standardlib gehört hat, und es kann ja sein, dass der OP mit 2.2 arbeitet.

fs111

Verfasst: Montag 12. Juli 2004, 14:41
von Milan
Also PyXML gehört ja auch nicht zur Standartbibliothek. Aber trotzdem bietet Python seit Python 2.0 ein Package xml an, in dem SAX und DOM Parser zur Verfügung gestellt werden. Wenn man sich damit ein wenig beschäftigt, kann man damit auch ganz gut arbeiten.