I try to do a simple string replacement, but I don't know why it doesn't seem to work:
X = "hello world"
X.replace("hello", "goodbye")
I want to change the word hello
to goodbye
, thus it should change the string "hello world"
to "goodbye world"
. But X just remains "hello world"
. Why is my code not working?
This is because strings are immutable in Python.
Which means that X.replace("hello","goodbye")
returns a copy of X
with replacements made. Because of that you need replace this line:
X.replace("hello", "goodbye")
with this line:
X = X.replace("hello", "goodbye")
More broadly, this is true for all Python string methods that change a string's content "in-place", e.g. replace
,strip
,translate
,lower
/upper
,join
,...
You must assign their output to something if you want to use it and not throw it away, e.g.
X = X.strip(' \t')
X2 = X.translate(...)
Y = X.lower()
Z = X.upper()
A = X.join(':')
B = X.capitalize()
C = X.casefold()
and so on.