2009-04-24 5 views

Antwort

12

Das Problem mit Ihrem Code ist, dass es zwei Unterfunktionen im Modul re. Einer ist der allgemeine und einer ist mit regulären Ausdrucksobjekten verbunden. Ihr Code wird nicht nach entweder ein:

Die beiden Methoden sind:

re.sub(pattern, repl, string[, count])(docs here)

wie so verwendet:

>>> y = re.sub(r, 'blue', x) 
>>> y 
'The sky is blue' 

Und wenn Sie es vor der Hand kompilieren, wie Sie versucht haben, , können Sie verwenden:

RegexObject.sub(repl, string[, count=0])(docs here)

wie so verwendet:

>>> z = r.sub('blue', x) 
>>> z 
'The sky is blue' 
+2

Möglichkeit, meine Antwort zu bearbeiten. – Unknown

1

Versuchen:

x = r.sub("blue", x) 
+1

Das funktioniert nicht. Dann ist x einfach "blau". – mike

+0

natürlich funktioniert es nicht, es ist das gleiche wie 'y = r (x," blau ")' – hasen

+0

Guter Fang, sah ich, dass er nicht den Rückgabewert, aber nicht die Reihenfolge der Parameter erfasst. Ich habe meinen Code korrigiert, um die Parameter in der richtigen Reihenfolge zu haben. – Loktar

3

Sie haben Die Argumente für Ihren Anruf an sub der falsche Weg sollte es sein:

 

import re 
x = "The sky is red" 
r = re.compile ("red") 
y = r.sub("blue", x) 
print x # Prints "The sky is red" 
print y # Prints "The sky is blue" 
 
3

By the way, für so ein einfaches Beispiel, das re Modul ist übertrieben:

x= "The sky is red" 
y= x.replace("red", "blue") 
print y 
+0

Ich hatte dies in meiner ursprünglichen Antwort, aber das OP sagte, dass er tatsächlich etwas komplexer benötigt und das war nur ein Beispiel. +1 sowieso. –

Verwandte Themen