J'essaie de remplacer une chaîne simple, mais je ne sais pas pourquoi cela ne semble pas fonctionner:
X = "hello world"
X.replace("hello", "goodbye")
Je veux changer le mot hello
à goodbye
donc il faut changer la chaîne "hello world"
à "goodbye world"
. Mais X reste juste "hello world"
. Pourquoi mon code ne fonctionne pas?
Réponses:
207 pour la réponse № 1Ceci est dû au fait les chaînes sont immuables en Python.
Ce qui signifie que X.replace("hello","goodbye")
résultats une copie de X
avec des remplacements faits. Pour cette raison, vous devez remplacer cette ligne:
X.replace("hello", "goodbye")
avec cette ligne:
X = X.replace("hello", "goodbye")
Plus généralement, Cela est vrai pour toutes les méthodes de chaîne Python qui changent le contenu d'une chaîne "sur place", par exemple. replace
,strip
,translate
,lower
/upper
,join
,...
Vous devez affecter leur sortie à quelque chose si vous voulez l'utiliser et ne pas le jeter, par exemple
X = X.strip(" t")
X2 = X.translate(...)
Y = X.lower()
Z = X.upper()
A = X.join(":")
B = X.capitalize()
C = X.casefold()
etc.
0 pour la réponse № 2
Toutes les chaînes fonctionnent comme lower
, upper
, strip
retournent une chaîne sans modifier l'original. Si vous essayez de modifier une chaîne, comme vous pourriez le penser well it is an iterable
, ça va échouer.
x = "hello"
x[0] = "i" #"str" object does not support item assignment
Il y a une bonne lecture sur l'importance de l'immuabilité des chaînes: Pourquoi les chaînes Python sont-elles immuables? Les meilleures pratiques pour les utiliser