完整替换字符串

时间:2014-07-24 20:57:30

标签: python string

如果它完全匹配Python中的字符串,我想替换单词。

假设,

 st = 'Length Le'.

我想替换所有单词' le'与< =

结果必须是

'Length <='

我尝试使用replace()和re.sub(),但它给了我

'<=ngth <='

此操作是否有内置功能?

4 个答案:

答案 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,代表一个单词边界,后跟le和一个单词边界。使用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的输入在形式上总是是静态的并且遵循某种格式。