首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:从给定字符串中删除单词

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

Stack Overflow用户
提问于 2016-07-17 12:04:06
回答 3查看 4.5K关注 0票数 2

我对编程非常陌生(这是我第一篇关于堆栈溢出的文章),但是我发现这个问题很难解决。在本例中,我应该删除给定的字符串(WUB),并将其替换为空格。例如:song_decoder(WUBWUBAWUBWUBWUBBWUBC)会给出输出:A B C。在这个论坛上的其他问题中,我能够确定我需要替换"WUB“,并删除空白,使用拆分/连接。这是我的代码:

代码语言:javascript
复制
def song_decoder(song):
     song.replace("WUB", " ")
     return " ".join(song.split())

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-17 12:08:28

您已经接近了!str.replace()不能“就地”工作;它返回一个新字符串,该字符串已经执行了所请求的替换操作。

返回字符串的副本,并将所有出现的子字符串替换为new。如果给出了可选参数计数,则只替换第一个计数出现。

取而代之的是这样做:

代码语言:javascript
复制
def song_decoder(song):
     song = song.replace("WUB", " ")
     return " ".join(song.split())

例如:

代码语言:javascript
复制
In [14]: song_decoder("BWUBWUBFF")
Out[14]: 'B FF'
票数 4
EN

Stack Overflow用户

发布于 2016-07-17 12:12:06

字符串在Python中是不可变的。因此,更改字符串(就像尝试使用“替换”函数)不会改变变量"song“。相反,它创建了一个新的字符串,通过不将它分配给某物,您会立即丢弃它。你可以

代码语言:javascript
复制
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

或者,为了使它更短(人们也可以称之为可读性较低),您可以

代码语言:javascript
复制
def song_decoder(song):
    return " ".join(song.replace("WUB", " ").split())
票数 4
EN

Stack Overflow用户

发布于 2016-07-17 12:10:58

在一行中执行这两个步骤。

代码语言:javascript
复制
def song_decoder(song):
    return ' '.join(song.replace('WUB',' ').split())

结果

代码语言:javascript
复制
In [95]: song_decoder("WUBWUBAWUBWUBWUBBWUBC")
Out[95]: 'A B C'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38420987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档