我想用另一个词替换字符串中的一个词。前任。replaceWord("cool","awesome","堆栈溢出很酷。") 输出将是:"堆栈溢出很棒" 我不明白为什么我的代码不起作用。
def replaceWord(oldWord,newWord,aStr):
aStr.replace(oldWord,newWord)
return aStr
我想用另一个词替换字符串中的一个词。前任。replaceWord("cool","awesome","堆栈溢出很酷。") 输出将是:"堆栈溢出很棒" 我不明白为什么我的代码不起作用。
def replaceWord(oldWord,newWord,aStr):
aStr.replace(oldWord,newWord)
return aStr
def replaceWord(old, new, astr):
return astr.replace(old, new)
字符串操作永远不会就地 - 而 replace() 将创建一个新字符串,因为字符串是不可变的。
但是等等......为什么你想要你自己的字符串 replaceWord() 方法?
字符串有自己的内置 replace() 方法!
试试这个
def replaceWord(oldWord,newWord,aStr):
aStr = aStr.replace(oldWord,newWord)
return aStr
为什么你不只是使用的返回值aStr.replace(oldWord,newWord)
?为什么必须将此函数嵌套在另一个函数中?至于您的问题,这是因为replace
不是就地操作。您需要执行以下操作:
return aStr.replace(oldWord, newWord)
无论如何,我仍然觉得你将它包装在一个函数中很奇怪......
根据http://docs.python.org/2/library/string.html
string.replace(s, old, new[, maxreplace]) 返回字符串 s 的副本,其中所有出现的子字符串 old 都替换为 new。如果给出了可选参数 maxreplace,则替换第一个 maxreplace 出现。
因此,您的代码应修改为:
def replaceWord(oldWord,newWord,aStr):
return aStr.replace(oldWord,newWord)
这种区别在于您没有从替换函数中捕获返回的(新)字符串。
理想情况下,您应该只使用aStr.replace(oldWord,newWord)
而不将其包装在函数中。这样会减少开销,并使代码更清晰。
如果您希望它只替换第一个单词,您可以添加第三个可选参数,即要替换的次数。