Answers:
这是因为字符串在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()
等等。
所有的字符串功能lower
,upper
,strip
而没有修改原始返回的字符串。如果您尝试修改一个字符串(可能会想到)well it is an iterable
,它将失败。
x = 'hello'
x[0] = 'i' #'str' object does not support item assignment
关于字符串不可更改的重要性的文章很好读:为什么Python字符串不可更改?使用它们的最佳实践
x += 'a'
特殊情况,字符串可以