なぜこの関数は置換の結果を返さないのですか?str.replaceは関数内では機能しません
def replacechar(str):
str.replace("č","c")
str.replace("a","y")
return str
p= "abcdč"
replacechar(p)
print(p)
出力:
abcdč
なぜこの関数は置換の結果を返さないのですか?str.replaceは関数内では機能しません
def replacechar(str):
str.replace("č","c")
str.replace("a","y")
return str
p= "abcdč"
replacechar(p)
print(p)
出力:
abcdč
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)
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č
ありがとう(ところで非常に悪い変数名である)バックstr' 'にそれを割り当てる必要があります!それが私が知りたかったものです。 –
@cvizradaこれがあなたが知りたかったものなら、[Ev。 Kounis '](https://stackoverflow.com/questions/45730870/str-replace-wont-work-within-new-defined-function/45730988#comment78419379_45730870)のコメントによると、 –
残念ながら私は何とか彼の通知のコメントを見逃していましたので、私はこれを最初に見ました。私はここに新しいです、申し訳ありません。 –
あなただけ –