2009-04-24 52 views

回答

12

與您的代碼的問題是,有再模塊中的兩個子功能。其中一個是普通表達式,並且有一個與正則表達式對象綁定。您的代碼不下列任何一個:

這兩種方法是:

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

使用像這樣:

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

而當你的手之前編譯它,你嘗試過了,您可以使用:

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

使用像這樣:

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

編輯我的答案的方法。 – Unknown 2009-04-24 18:14:20

1

嘗試:

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

這是行不通的。然後x就是「藍色」。 – mike 2009-04-24 17:46:24

+0

當然它不會工作,它是`y = r.sub(x,「藍色」)` – hasen 2009-04-24 17:59:30

+0

相同的好,我看到他沒有捕獲返回值,但沒有參數的順序。我已更正我的代碼,以正確的順序包含參數。 – Loktar 2009-04-24 19:24:11

6

你讀¶

r.sub(x, "blue") 
# should be 
r.sub("blue", x) 
3

你有API錯誤

http://docs.python.org/library/re.html#re.sub

pattern.sub(REPL,字符串[,計數])您撥打sub錯誤方法的理由應該是:

 

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

順便說一句,對於這樣一個簡單的例子,re模塊是矯枉過正:

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