我对编程很新(这是我在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'
的错误。任何帮助或指出我正确的方向将不胜感激。
答案 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'