2014-07-24 26 views
0

我想替換單詞,如果它與完全在Python中的字符串匹配。替換其中的字符串

假設,

st = 'Length Le'. 

我想< =

結果全部更換的話 '樂' 必須是

'Length <=' 

我試圖與替換()和重。 sub()但它給我

'<=ngth <=' 

此操作是否有內置功能?

+0

'replace'對我來說工作正常。 – Christian

+0

如何指定您感興趣的'le'?它周圍的空白?詞邊界?正則表達式可能是最好的選擇 – Basic

+0

你好,歡迎來到Stack Overflow。請提供一個簡短,完整的程序,說明您遇到的問題。見http://sscce.org或http://stackoverflow.com/help/mcve –

回答

1

嘗試這樣的事情......

import re 
s = "Length Le" 
re.sub(r'\bLe\b', '<=', s) 

它將匹配正則表達式\bLe\b<=替換所有比賽。該表示意味着"Le" where it's not surrounded by alphanumeric characters。實際上,Le被空白或標點符號包圍。

有關Regex的Python文檔值得一讀,具體看\b它匹配一個字邊界。

+0

它的工作原理,但如何解釋呢? – user3857330

+0

這有幫助嗎? – Basic

0

如果你總是知道le將是它自己的一個詞,你可以在它之前和之後有空格時替換它。需要注意的是,您必須將字符串從'Length le'更改爲'Length le '

>>> s1 = 'Length le ' 
>>> s2 = 'length le ' 
>>> s3 = ' le length' 
>>> s1.replace(' le ', '<= ') 
'Length <=' 
>>> s2.replace(' le ', '<= ') 
'length <=' 
>>> s3.replace(' le ', '<= ') 
'<= length' 
0

使用正則表達式\b匹配一個字邊界 - 例如零寬度的字符串,在一側上具有非文字字符,並且在另一側具有一個字字符。

同樣地作爲選擇使用Unicode字符串匹配re.I爲忽略大小寫,並re.U如果你有非ASCII字符,並且使用的是Python的2 ...

因此,我們得到一個正則表達式\ble\b它代表一字邊界,後跟l,e,字邊界。用re.I這種情況被忽略,所以l也將匹配Le也將匹配E

例子:

>>> import re 
>>> string = "Length Le le ale" 
>>> re.sub(r'\ble\b', '<=', string, flags=re.I|re.U) 
'Length <= <= ale' 
0

片吧!

st = 'Length Le' 
if st.endswith(' Le'): 
    st = st[0:len(st)-3] + " <=" 
print st 
Length <= 

注意到可變ST,檢查,看它是否與「樂」結尾如果爲真,使用字符串切片結束「樂」被刪除,「< =」然後加入。這是考慮你對var st的輸入在形式上始終是靜態的,並且堅持一定的格式。