Reguläre Ausdrücke

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
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Freitag 9. Juli 2004, 10:03

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
'Ich liebe es wenn ein Plan funktioniert'
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Freitag 9. Juli 2004, 11:52

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:
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Freitag 9. Juli 2004, 11:54

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
'Ich liebe es wenn ein Plan funktioniert'
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Freitag 9. Juli 2004, 12:06

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?
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Freitag 9. Juli 2004, 14:39

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
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Montag 12. Juli 2004, 08:09

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
'Ich liebe es wenn ein Plan funktioniert'
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Montag 12. Juli 2004, 08:58

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.
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Montag 12. Juli 2004, 10:41

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
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Montag 12. Juli 2004, 14:41

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.
Antworten