替换整个字符串

2024-10-01 02:24:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

假设

 st = 'Length Le'.

我想用<;=

结果必须是

'Length <='

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

'<=ngth <='

此操作是否有内置函数


Tags: 函数字符串ltrele单词length内置
3条回答

使用正则表达式\b来匹配单词边界——这样一个零宽度的字符串,一边有非单词字符,另一边有单词字符

也可以选择使用re.I作为忽略大小写,如果您使用的是非Ascii字,并且使用的是Python2,则使用re.U作为Unicode字符串匹配

因此,我们得到一个regex \ble\b,它代表单词边界,紧随其后的是le和单词边界。使用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'

试试这个

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与单词边界匹配

如果您总是知道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'

相关问题 更多 >