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