【问题标题】:How to use .replace in python?如何在python中使用.replace?
【发布时间】:2013-09-17 16:40:23
【问题描述】:

我想用另一个词替换字符串中的一个词。前任。 replaceWord("cool","awesome","Stack overflow is cool.") 输出会是:"Stack overflow is awesome" 我不明白为什么我的代码不起作用。

def replaceWord(oldWord,newWord,aStr):
    aStr.replace(oldWord,newWord)
    return aStr

【问题讨论】:

标签: python


【解决方案1】:
def replaceWord(old, new, astr):
   return astr.replace(old, new)

字符串操作是从不在原地进行的 - 而 replace() 将创建一个新字符串,因为字符串是不可变的。

但是等等...为什么你想要你自己的字符串 replaceWord() 方法?

字符串有自己的内置 replace() 方法!

【讨论】:

  • 当然,最好只使用str.replace,而不是像这样包装它。
  • 不。我是 CS 入门的学生,所以我总是有这样的愚蠢问题。不过谢谢!
【解决方案2】:

试试这个

def replaceWord(oldWord,newWord,aStr): 
   aStr = aStr.replace(oldWord,newWord) 
   return aStr

【讨论】:

    【解决方案3】:

    为什么不只使用aStr.replace(oldWord,newWord) 的返回值?为什么必须将此函数嵌套在另一个函数中?至于您的问题,这是因为replace 不是就地操作。您需要执行以下操作:

    return aStr.replace(oldWord, newWord)
    

    无论如何,我仍然觉得你将它包装在一个函数中很奇怪......

    【讨论】:

      【解决方案4】:

      根据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) 而不将其包装在函数中。这样会减少开销,并且使代码更清晰。

      如果您希望它只替换第一个单词,您可以添加第三个可选参数,即要替换的次数。

      【讨论】:

        猜你喜欢
        • 2021-06-07
        • 1970-01-01
        • 2015-11-02
        • 1970-01-01
        • 1970-01-01
        • 2016-02-17
        • 2017-03-04
        • 2021-12-08
        • 1970-01-01
        相关资源
        最近更新 更多