如果它完全匹配Python中的字符串,我想替换单词。
假设,
st = 'Length Le'.
我想替换所有单词' le'与< =
结果必须是
'Length <='
我尝试使用replace()和re.sub(),但它给了我
'<=ngth <='
此操作是否有内置功能?
答案 0 :(得分: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
。
答案 1 :(得分: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'
答案 2 :(得分:0)
使用正则表达式\b
来匹配字边界 - 这样的零宽度字符串,一方面有非单词字符,另一方面有一个单词 - 字符。
也可以选择re.I
表示忽略大小写,re.U
表示Unicode字符串匹配,如果你有非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'
答案 3 :(得分:0)
切片!
st = 'Length Le'
if st.endswith(' Le'):
st = st[0:len(st)-3] + " <="
print st
Length <=
取变量st,检查它是否以“Le”结束,如果为true,则使用字符串切片删除结尾“Le”,然后添加“&lt; =”。这是考虑到你对var st的输入在形式上总是是静态的并且遵循某种格式。