0

文字列内の単語を別の単語に置き換えたい。元。replaceWord("cool","awesome","Stack Overflow is cool.") 出力は次のようになります。

def replaceWord(oldWord,newWord,aStr):
    aStr.replace(oldWord,newWord)
    return aStr
4

4 に答える 4

7
def replaceWord(old, new, astr):
   return astr.replace(old, new)

文字列操作はインプレースではありません。代わりに、文字列は不変であるため、replace() は新しい文字列を作成します。

しかし、待ってください...なぜ独自の文字列 replaceWord() メソッドが必要なのですか?

文字列には独自の組み込みの replace() メソッドがあります。

于 2013-09-13T05:13:46.517 に答える
1

http://docs.python.org/2/library/string.htmlに従って

string.replace(s, old, new[, maxreplace]) 文字列 s のコピーを返し、部分文字列 old の出現箇所をすべて new に置き換えます。オプションの引数 maxreplace が指定されている場合、最初の maxreplace 出現箇所が置き換えられます。

したがって、コードを次のように変更する必要があります。

def replaceWord(oldWord,newWord,aStr):
    return aStr.replace(oldWord,newWord)

この違いは、replace 関数から返された (新しい) 文字列をキャッチしなかったことです。

理想的aStr.replace(oldWord,newWord)には、関数にラップせずに使用する必要があると考えました。その方がオーバーヘッドが少なくなり、コードがより明確になります。

最初の単語のみを置き換えたい場合は、3 番目のオプションのパラメーターを追加できます。これは、置換の回数です。

于 2013-09-13T05:35:21.107 に答える
1

の戻り値を使用しないのはなぜaStr.replace(oldWord,newWord)ですか? この関数を別の関数内にネストする必要があるのはなぜですか? あなたの質問はreplace、インプレース操作ではないためです。次のようなことをする必要があります:

return aStr.replace(oldWord, newWord)

とにかく、関数でラップしたのはまだ奇妙だと思います...

于 2013-09-13T05:18:39.840 に答える
1

これを試して

def replaceWord(oldWord,newWord,aStr): 
   aStr = aStr.replace(oldWord,newWord) 
   return aStr
于 2013-09-13T05:15:10.760 に答える