我对编程非常陌生(这是我第一篇关于堆栈溢出的文章),但是我发现这个问题很难解决。在本例中,我应该删除给定的字符串(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'错误。任何帮助或指出我的正确方向将不胜感激。
发布于 2016-07-17 12:08:28
您已经接近了!str.replace()不能“就地”工作;它返回一个新字符串,该字符串已经执行了所请求的替换操作。
返回字符串的副本,并将所有出现的子字符串替换为new。如果给出了可选参数计数,则只替换第一个计数出现。
取而代之的是这样做:
def song_decoder(song):
song = song.replace("WUB", " ")
return " ".join(song.split())例如:
In [14]: song_decoder("BWUBWUBFF")
Out[14]: 'B FF'发布于 2016-07-17 12:12:06
字符串在Python中是不可变的。因此,更改字符串(就像尝试使用“替换”函数)不会改变变量"song“。相反,它创建了一个新的字符串,通过不将它分配给某物,您会立即丢弃它。你可以
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())发布于 2016-07-17 12:10:58
在一行中执行这两个步骤。
def song_decoder(song):
return ' '.join(song.replace('WUB',' ').split())结果
In [95]: song_decoder("WUBWUBAWUBWUBWUBBWUBC")
Out[95]: 'A B C'https://stackoverflow.com/questions/38420987
复制相似问题