回答:
これは、Pythonでは文字列が不変であるためです。
つまり、置換されたのコピーがX.replace("hello","goodbye")
返されます。そのため、次の行を置き換える必要があります。X
X.replace("hello", "goodbye")
この行で:
X = X.replace("hello", "goodbye")
より広く、これは「インプレース」の文字列の内容を変更し、すべてのPython文字列のメソッドにも当てはまり、例えばreplace
、strip
、translate
、lower
/ upper
、join
、...
あなたがそれを使いたい、それを捨てたくない場合、あなたはそれらの出力を何かに割り当てなければなりません。
X = X.strip(' \t')
X2 = X.translate(...)
Y = X.lower()
Z = X.upper()
A = X.join(':')
B = X.capitalize()
C = X.casefold()
等々。
すべての文字列関数としてlower
、upper
、strip
オリジナルを変更せずに文字列を返しています。文字列を変更しようとするとwell it is an iterable
、思うかもしれませんが、失敗します。
x = 'hello'
x[0] = 'i' #'str' object does not support item assignment
文字列が不変であることの重要性についての良い読みがあります:なぜPython文字列は不変ですか?それらを使用するためのベストプラクティス
x += 'a'
特殊なケースに変更できます。例:stackoverflow.com/a/40996908/6260170