2017-08-17 15 views

答えて

5

str.replaceはインプレース操作ではありません。文字列を返します。良いことは、あなたの関数が最小限の変更で動作することです。

def replacechar(string): 
    return string.replace("č","c").replace("a","y") 

次に、あなたが戻っpに戻り値を代入する必要があります。

p = replacechar(p) 

既にその名前で何かを持っているので、また、オブジェクトに名前を付けるstrを使用しないでください。


また、str.translateを考えましたか?

_TAB = str.maketrans({'č' : 'c', 'a' : 'y'}) 
def replacechar(string): 
    return string.translate(_TAB) 
3

replace()昔の出現が新しいと交換された文字列のコピーを返します。

str.replaceは、更新された文字列を返すためにstrに割り当てられなければなりません。

上記の関数では、変数strを上書きしません。

def replacechar(str): 
    str = str.replace("č","c") 
    str = str.replace("a","y") 
    return str 
p= "abcdč" 
print replacechar(p) 
print(p) 

出力:

ybcdc 
abcdč 
+0

ありがとう(ところで非常に悪い変数名である)バックstr' 'にそれを割り当てる必要があります!それが私が知りたかったものです。 –

+1

@cvizradaこれがあなたが知りたかったものなら、[Ev。 Kounis '](https://stackoverflow.com/questions/45730870/str-replace-wont-work-within-new-defined-function/45730988#comment78419379_45730870)のコメントによると、 –

+0

残念ながら私は何とか彼の通知のコメントを見逃していましたので、私はこれを最初に見ました。私はここに新しいです、申し訳ありません。 –

関連する問題