Python:从给定字符串中删除单词

时间:2016-07-17 12:04:06

标签: python

我对编程很新(这是我在stackoverflow上的第一篇文章)但是我发现这个问题非常困难。我应该在这种情况下删除一个给定的字符串(WUB)并用空格替换它。例如:song_decoder(WUBWUBAWUBWUBWUBBWUBC)会给出输出:A B C。从这个论坛上的其他问题我能够确定我需要更换" WUB"并删除空格使用拆分/连接。这是我的代码:

def song_decoder(song):
     song.replace("WUB", " ")
     return " ".join(song.split())

我不确定我在哪里出错,因为我在运行代码后出现了WUB should be replaced by 1 space: 'AWUBBWUBC' should equal 'A B C'的错误。任何帮助或指出我正确的方向将不胜感激。

3 个答案:

答案 0 :(得分:4)

你很亲密! str.replace()无法“就地”运作;它返回一个新的字符串,该字符串已对其执行了请求的替换。

  

返回字符串的副本,其中所有出现的substring old都替换为new。如果给出了可选参数计数,则仅替换第一次计数出现次数。

请改为:

def song_decoder(song):
     song = song.replace("WUB", " ")
     return " ".join(song.split())

例如:

In [14]: song_decoder("BWUBWUBFF")
Out[14]: 'B FF'

答案 1 :(得分:4)

字符串在Python中是不可变的。因此,更改字符串(就像您尝试使用“替换”功能)不会更改变量“歌曲”。它创建了一个新的字符串,你不会将它分配给某个东西而立即扔掉。你可以做到

def song_decoder(song):
    result = song.replace("WUB", " ")  # replace "WUB" with " "
    result = result.split()            # split string at whitespaces producing a list
    result = " ".join(result)          # create string by concatenating list elements around " "s
    return result

或者,为了缩短它(也可以称之为可读性较低),你可以

def song_decoder(song):
    return " ".join(song.replace("WUB", " ").split())

答案 2 :(得分:1)

将这两个步骤放在一行中。

def song_decoder(song):
    return ' '.join(song.replace('WUB',' ').split())

<强>结果

In [95]: song_decoder("WUBWUBAWUBWUBWUBBWUBC")
Out[95]: 'A B C'