私は単純な文字列置換を試みますが、なぜそれが機能しないように見えるのかわかりません:
X = "hello world"
X.replace("hello", "goodbye")
Word hello
をgoodbye
に変更したいので、文字列"hello world"
を"goodbye world"
に変更する必要があります。しかし、Xは"hello world"
のままです。コードが機能しないのはなぜですか?
これは、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文字列は不変ですか?それらを使用するためのベストプラクティス