Это потому что строки неизменны в 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()
и так далее.
x += 'a'
особого случая, например stackoverflow.com/a/40996908/6260170Все строковые функции , как
lower
,upper
,strip
возвращается строка без изменения оригинала. Если вы попытаетесь изменить строку, как вы думаетеwell it is an iterable
, она потерпит неудачу.источник