2016-11-17 87 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以及。 –