Dzieje się tak, ponieważ w Pythonie ciągi znaków są niezmienne .
Co oznacza, że X.replace("hello","goodbye")
zwraca kopię X
z dokonanymi wymianami . Z tego powodu musisz zamienić tę linię:
X.replace("hello", "goodbye")
z tą linią:
X = X.replace("hello", "goodbye")
Szerzej, to jest prawdziwe dla wszystkich metod ciąg Pythona, które zmieniają treść ciąg jest „w miejscu” , na przykład replace
, strip
, translate
, lower
/ upper
,join
...
Musisz przypisać do czegoś ich wyjście, jeśli chcesz go używać i nie wyrzucać, np
X = X.strip(' \t')
X2 = X.translate(...)
Y = X.lower()
Z = X.upper()
A = X.join(':')
B = X.capitalize()
C = X.casefold()
i tak dalej.
x += 'a'
szczególnego przypadku, np stackoverflow.com/a/40996908/6260170Wszystkie funkcje łańcuchowe jako
lower
,upper
,strip
wracają ciąg bez modyfikowania oryginalnego. Jeśli spróbujesz zmodyfikować ciąg, jak możesz pomyślećwell it is an iterable
, zakończy się to niepowodzeniem.źródło