2014-05-15 91 views
7

我需要去掉字符串中的特定单词。如何从字符串中删除特定的单词?

但我发现python strip方法似乎无法识别有序的单词。只剥离传递给参数的任何字符。

例如:

>>> papa = "papa is a good man" 
>>> app = "app is important" 
>>> papa.lstrip('papa') 
" is a good man" 
>>> app.lstrip('papa') 
" is important" 

我怎么能剥夺与蟒蛇指定的字?

+0

你看过“S.lstrip”的文档吗?它做了与你想要做的完全不同的事情。你想把这个字符串替换成什么都没有。 –

+0

你想要发生什么“番木瓜”这个词? – DSM

+0

@DSM我猜输出应该是'ya'。让我们等待OP确认 – thefourtheye

回答

17

使用str.replace

>>> papa.replace('papa', '') 
' is a good man' 
>>> app.replace('papa', '') 
'app is important' 

或者使用re并使用正则表达式。这将允许删除前导/尾随空格。

>>> import re 
>>> papa = 'papa is a good man' 
>>> app = 'app is important' 
>>> papa3 = 'papa is a papa, and papa' 
>>> 
>>> patt = re.compile('(\s*)papa(\s*)') 
>>> patt.sub('\\1mama\\2', papa) 
'mama is a good man' 
>>> patt.sub('\\1mama\\2', papa3) 
'mama is a mama, and mama' 
>>> patt.sub('', papa3) 
'is a, and' 
+0

尝试'打印“爸爸是爸爸是爸爸”.replace('爸爸','')' – thefourtheye

+0

分心,didn' t完成了使用're'的例子,这将允许删除前导/尾随空格。 – metatoaster

+0

这个问题并不清楚。 :( – thefourtheye

5

最简单的方法是简单地用空字符串替换它。

s = s.replace('papa', '') 
+0

您可能还想在papa之后添加空格 - 我假设他不希望字符串中留有前导空格。 –

+0

尝试'打印“爸爸是爸爸是爸爸”.replace('爸爸','')' – thefourtheye

2

您还可以使用与re.sub一个正则表达式:

article_title_str = re.sub(r'(\s?-?\|?\s?Times of India|\s?-?\|?\s?the Times of India|\s?-?\|?\s+?Gadgets No'', 
          article_title_str, flags=re.IGNORECASE) 
1

提供你知道开始和你想的字符数组中,以取代每个单词的末尾的索引值,如果您只是想要取代特定的数据块,你可以这样做。

>>> s = "papa is papa is papa" 
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:] 
>>> print(s) 
papa is mama is papa 

或者,如果您还希望保留原始数据结构,则可以将其存储在字典中。

>>> bin = {} 
>>> s = "papa is papa is papa" 
>>> bin["0"] = s 
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:] 
>>> print(bin["0"]) 
papa is papa is papa 
>>> print(s) 
papa is mama is papa 
相关问题