Seite 1 von 1

RegEx: Spezielle Änderung in Python nötig?

Verfasst: Mittwoch 6. August 2008, 09:12
von Area51
Moinsen,
ich lasse durch ein Python-Script eine Beschreibungsseite auslesen und deren Inhalt soll ein eine Datenbank gespeichert werden.
Nur bekomm ich auf jeder Seite einen MySQL-Error. Zum Glück sind diese zwischen zwei Font-Tags gespeichert.

Dachte ich halt, bauste nen Regulären Ausdruck um diese Störfälle aus dem Code zu löschen.

Ein Code-Stück sieht z.B. so aus:

Code: Alles auswählen

<input type="hidden" name="jahrvon" value="" /><input type="hidden" name="jahrbis" value="" /><input type="hidden" name="lieferbar" value="" /></form><br /><font color="ff0000">???_<br />
<b>Warning</b>:  mysql_close(): supplied argument is not a valid MySQL-Link resource in <b>/srv/www/htdocs/shop/migal/limashop0/85224A.php</b> on line <b>196</b><br />
_???</font>
Mein RegEx lautet so:

Code: Alles auswählen

/<font color="ff0000">(.*?)<\/font>/ism
In einem RegEx-Tool funktioniert das, in Python aber nicht.
Aufrufen tu ich das ganze über

Code: Alles auswählen

regEx = '/<font color="ff0000">(.*?)<\/font>/ism'
desc = re.sub (regEx, '', desc)
Funktioniert aber nicht. Ich habe auch schon

Code: Alles auswählen

regEx = '<font color="ff0000">(.*?)<\/font>'
ausprobiert, geht aber auch nicht.

Wo ist der Fehler?

Verfasst: Mittwoch 6. August 2008, 09:15
von sma
Lass die "/" weg und benutze statt "ism" die entsprechenden Konstanten aus dem "re"-Modul. Alternativ kannst du auch den regulären Ausdruck mit (?ism) beginnen.

Stefan

Verfasst: Mittwoch 6. August 2008, 09:25
von Area51
(?ism) hat funktioniert. Vielen Dank :)

Verfasst: Mittwoch 6. August 2008, 09:51
von lunar
Oder nimm am besten gleich einen richten HTML-Parser wie BeautifulSoup oder lxml.html. Markup parst man nicht mit regulären Ausdrücken ...