Isso ocorre porque as strings são imutáveis no Python .
O que significa que X.replace("hello","goodbye")
retorna uma cópia X
com as substituições feitas . Por isso, você precisa substituir esta linha:
X.replace("hello", "goodbye")
com esta linha:
X = X.replace("hello", "goodbye")
Mais amplamente, isso é verdade para todos os métodos de string Python que mudam o conteúdo de uma string "in-place" , por exemplo replace
, strip
, translate
, lower
/ upper
, join
...
Você deve atribuir a saída deles a algo se quiser usá-lo e não jogá-lo fora, por exemplo
X = X.strip(' \t')
X2 = X.translate(...)
Y = X.lower()
Z = X.upper()
A = X.join(':')
B = X.capitalize()
C = X.casefold()
e assim por diante.
x += 'a'
um caso especial, por exemplo, stackoverflow.com/a/40996908/6260170 #Todas as funções de cadeia como
lower
,upper
,strip
estão retornando uma string sem modificar o original. Se você tentar modificar uma string, como você pode pensarwell it is an iterable
, ela falhará.fonte