除非分配输出,否则为什么不调用Python字符串方法呢?

Kat*_*ina 133 python string replace

我尝试做一个简单的字符串替换,但我不知道为什么它似乎不起作用:

X = "hello world"
X.replace("hello", "goodbye")
Run Code Online (Sandbox Code Playgroud)

我想将单词更改hellogoodbye,因此它应该将字符串更改"hello world""goodbye world".但X仍然存在"hello world".为什么我的代码不起作用?

Tad*_*eck 229

这是因为字符串在Python中是不可变的.

这意味着X.replace("hello","goodbye")返回带有替换的副本X.因此,您需要替换此行:

X.replace("hello", "goodbye")
Run Code Online (Sandbox Code Playgroud)

用这一行:

X = X.replace("hello", "goodbye")
Run Code Online (Sandbox Code Playgroud)

更广泛地说,这是所有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()
Run Code Online (Sandbox Code Playgroud)

等等.