我想替換單詞,如果它與完全在Python中的字符串匹配。替換其中的字符串
假設,
st = 'Length Le'.
我想< =
結果全部更換的話 '樂' 必須是
'Length <='
我試圖與替換()和重。 sub()但它給我
'<=ngth <='
此操作是否有內置功能?
我想替換單詞,如果它與完全在Python中的字符串匹配。替換其中的字符串
假設,
st = 'Length Le'.
我想< =
結果全部更換的話 '樂' 必須是
'Length <='
我試圖與替換()和重。 sub()但它給我
'<=ngth <='
此操作是否有內置功能?
嘗試這樣的事情......
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
它匹配一個字邊界。
它的工作原理,但如何解釋呢? – user3857330
這有幫助嗎? – Basic
如果你總是知道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'
使用正則表達式\b
匹配一個字邊界 - 例如零寬度的字符串,在一側上具有非文字字符,並且在另一側具有一個字字符。
同樣地作爲選擇使用Unicode字符串匹配re.I
爲忽略大小寫,並re.U
如果你有非ASCII字符,並且使用的是Python的2 ...
因此,我們得到一個正則表達式\ble\b
它代表一字邊界,後跟l
,e
,字邊界。用re.I
這種情況被忽略,所以l
也將匹配L
和e
也將匹配E
。
例子:
>>> import re
>>> string = "Length Le le ale"
>>> re.sub(r'\ble\b', '<=', string, flags=re.I|re.U)
'Length <= <= ale'
片吧!
st = 'Length Le'
if st.endswith(' Le'):
st = st[0:len(st)-3] + " <="
print st
Length <=
注意到可變ST,檢查,看它是否與「樂」結尾如果爲真,使用字符串切片結束「樂」被刪除,「< =」然後加入。這是考慮你對var st的輸入在形式上始終是靜態的,並且堅持一定的格式。
'replace'對我來說工作正常。 – Christian
如何指定您感興趣的'le'?它周圍的空白?詞邊界?正則表達式可能是最好的選擇 – Basic
你好,歡迎來到Stack Overflow。請提供一個簡短,完整的程序,說明您遇到的問題。見http://sscce.org或http://stackoverflow.com/help/mcve –