[Python-de] String in Datei ersetzten

Georg Mischler schorsch at schorsch.com
Wed Feb 6 11:38:25 EST 2002


Felix Seeger wrote:

> Ok ich habs ;)
> start="r\'^\s*#?<VirtualHost\s+" + ip + ">\s*$\'"
>
> hab vergessen die ' zu quoten.

Das ist nun mit ziemlicher Sicherheit *nicht* was du haben willst.
Damit hast du das r *innerhalb* des Strings, anstatt vorneweg.
Oder wird der String spaeter nochmal als Python-Ausdruck
evaluiert? Wenn ja, wozu?

Die doppelten Anfuehrungszeichen sind also fehl am Platz, und es
gibt auch keinen Grund, ein einfaches Anfuehrungszeichen innerhalb
eines Strings mit Backslash zu quoten.

Wahrscheinlich hilft eines der folgenden (semantisch identischen)
Beispiele. Folgende Aenderungen: Strings sind mit ''' geschrieben,
damit transparenter wird, was innerhalb oder ausserhalb ist.
Ich habe noch mehrere "\s*" eingefuegt, um die Suche robuster
zu machen (oder ist "<  VirtualHost... " illegal?). Das "\s*#?"
am Anfang habe ich aus dem gleichen Grund in "[\s#]*" umgewandelt.
Damit faengst du auch Zeilen, die mit "# # #  ### <VirtualHost..."
anfangen, z.B. nachdem jemand von Hand in der Datei rumgefummelt hat.
Zugunsten der Lesbarkeit empfehlen uebrigens die Style-Guides,
alle Operatoren mit Leerzeichen zu umgeben, auch das "=".

 start = r'''^[\s#]*<\s*VirtualHost\s+''' + ip + r'''\s*>\s*$'''

 start = r'''^[\s#]*<\s*VirtualHost\s+%s\s*>\s*$''' % ip


Viel Spass!

-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/




More information about the Python-de mailing list