问题:除非分配输出,为什么调用Python字符串方法不做任何事情?
我尝试做一个简单的字符串替换,但是我不知道为什么它似乎不起作用:
X = "hello world"
X.replace("hello", "goodbye")我想将单词更改hello为goodbye,因此应将字符串更改"hello world"为"goodbye world"。但是X仍然存在"hello world"。为什么我的代码不起作用?
回答 0
这是因为字符串在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()等等。
回答 1
所有的字符串功能lower,upper,strip而没有修改原始返回的字符串。如果您尝试修改一个字符串(可能会想到)well it is an iterable,它将失败。
x = 'hello'
x[0] = 'i' #'str' object does not support item assignment关于字符串不可更改的重要性的文章很好读:为什么Python字符串不可更改?使用它们的最佳实践
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

