2017-11-10 16 views
-1

st1に割り当てられた変数が文字列内にまったく表示されない場合(1が文字列に表示されず、文字列が*********)の場合に関数が返すように) 。。文字列は1を含まない場合、文字列はバック(*********)しかし、それは以下行われるようご協力いただきありがとうござい2ですべての1を置き換えPython:文字列内の文字を置換する

def replacest1(string,st1,st2): 
for i in string: 
    if i == st1: 
     N_W = string.replace(st1 , st2) 
     return N_W 
     print(replacest1("***1***1***","1","2")) 
+3

機能が必要かどうかわかりません。 'foo'、' tok'、 'rep'の3つの文字列が与えられた場合、単に' foo.replace(tok、rep) 'を使うと 'tok'のすべてのインスタンスを' rep'に置き換えて 'foo'を返します。 'foo'に' tok'のインスタンスが* no *含まれていれば、単に元の文字列 'foo'を返します。さらに、私はforループが不要であると思います。割り当ての場合は – jedwards

+0

、st1のすべてのインスタンスをs2に置き換える必要があります。文字列にst1が含まれていない場合は、単に文字列を返します。 – Jason

+2

ところで、 'string'は変数名には適していません。これは標準モジュールの名前です。 –

答えて

1
def replacest1(string, st1, st2): 
    return string.replace(st1, st2) 

テスト:

replacest1("abcdefdcba", "c", "x") 
"abxdefdxba" 

テスト:

replacest1("yyyyzzzz", "c", "x") 

結果で:

"yyyyzzzz" 

それともずっとずっとずっとずっと良い:

"abcdefdcba".replace("c", "x") 
での結果10

上記で定義された関数は、質問によって要求される関数と1対1で対応しています。 ではないstringを識別子として使用することをお勧めします。この種の識別子を使用するには、ではなくを強くお勧めします。


注:そのような関数の定義はstring.replace()として完全に排除することができるように、問題で使用される静止識別子stringを含有する上記溶液を廃止されつつ、依然として存在します。関数を削除することはできませんでしたが、ここでは別の識別子を使用しますが、独自の関数を定義する必要はありません。

def replaceCharacters(inputString, findChar, replaceChar): 
    assert isinstance(inputString, str) 
    assert isinstance(findChar, str) 
    assert len(findChar) == 1 
    assert isinstance(replaceChar, str) 
    assert len(replaceChar) == 1 

    buffer = "" 
    for c in inputString: 
     buffer += replaceChar if c == findChar else c 
    return buffer 

注:ここでは


string.replace()の使用せずにそれを実装する方法の変形である私が使用することを好む、プログラミングエラーを検出するために主張します。パフォーマンスが大きな問題ではない場合、これらのアサーションは問題を引き起こすことはありませんが、誤ってこのような関数を誤って使用することを防ぎます。誤って間違ったパラメータを渡すと、アサーションが失敗し、直ちにフィードバックが返されます。

+0

おそらく 'string'パラメータの名前を(おそらく' source_string'に)変更できますか?私は正直言ってあなたが非難された['string。replace'](https://docs.python.org/2/library/string.html#string.replace)関数を使用します。 –

+0

はい、そうです。私は廃止された文字列置換を使用しています。それはもはや文書化されていないようだが、それはまだ存在する。私は再び答えを更新します。 –

+0

それは今より良いはずです。 –

関連する問題