2016-11-17 78 views
0

要替换某个词在一个字符串,但不断收到followinf结果:替换命令条件替换字符串

字符串:"This is my sentence."

在他们想要的用户类型来代替:"is"

"was"

新的字符串:"Thwas was my sentence."

他们要替换词是什么类型的用户

我怎样才能确保它只替换词“是”,而不是它找到的任何字符串?

代码功能:

import string 
def replace(word, new_word): 
    new_file = string.replace(word, new_word[1]) 
    return new_file 

任何帮助非常感谢,谢谢!

+0

好找。我搜索了一个重复但用“替换”术语,而不是“查找”。 –

+0

所以没有I:[蟒替换的词不部分单词](https://www.google.ca/search?client=safari&rls=en&q=python+replace+words+not+partial+words&oq=python+replace+words+未+部分+词语gs_l = serp.3 ... 44021.51387.0.51523.33.30.0.3.3.0.127.2123.23j5.28.0 .... 0 ... ... 1c.1.64.serp..2.18.1097 0j0i67k1j0i131k1j0i22i30k1j33i21k1。 0mLcUwAiDdk)。我认为这里的关键词“不是部分词”是关键。 –

+0

至少现在的“替换”部分被覆盖:) –

回答

4

:不仅仅是一个分裂

import re 

print(re.sub(r"\bis\b","was","This is my sentence")) 

更好,因为标点符号的作品,以及:

print(re.sub(r"\bis\b","was","This is, of course, my sentence")) 

给出:

This was, of course, my sentence 

注意:不要跳过r前缀,否则你的正则表达式将被破坏:\b将被解释为退格。

+0

非常感谢!这对我的程序来说是完美的! –

+1

@Jarred McMahan如果一个答案适合你,那么请接受它,以便它被标记为'已回答'。 – falloutcoder

1

一个简单的但不那么全能溶液(如由Jean-Francios法布尔给出),而无需使用正则表达式。使用正则表达式字边界

' '.join(x if x != word else new_word for x in string.split()) 
+1

这不会保留原来的空格,因为您正在有效地用空格替换所有空格。还请在你的答案中提供一些信息,只是单行代码并不是那么有用。 –

+0

@Jean:不能同意更多。感谢提示和提示(y) – falloutcoder

+0

没有那么糟糕,如果你不想使用正则表达式。和pythonic以及。 –