2009-04-24 1 views

答えて

12

あなたのコードに問題が再モジュール内の2つのサブ機能があるということです。 1つは一般的なものであり、1つは正規表現オブジェクトに結びついています。あなたのコードは、次のいずれかされていません。

二つの方法があります:

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

1

試してみてください。

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

動作しないこと。それからxはちょうど "青"です。 – mike

+0

もちろん、それは動作しません、 'y = r.sub(x、" blue ")と同じです。 – hasen

+0

良いキャッチ、私は彼が戻り値をキャプチャしていないが、パラメータの順序ではないことがわかりました。私は正しい順序でparamsを持つように私のコードを修正しました。 – Loktar

6

あなたが

あなたが持っている
r.sub(x, "blue") 
# should be 
r.sub("blue", x) 
+2

+1。疑問があるときは、助けてください(r.sub) – ojrac

3

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

pattern.sub(REPL、文字列[、カウント])間違ったAPIを読みます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 
+0

私は私の元の答えでこれを持っていましたが、OPは彼が実際にはもっと複雑なものを必要としていたと言いました。 +1とにかく。 –

関連する問題