我有七种水果,你可以在一个句子中使用,你可以用不止一种,想写多少次都可以。它们是西瓜
、梨
、桃子
、橙子
、苹果
、香蕉
和葡萄
。我想报告这句话并替换出现的第一个水果,无论该词是否多次显示并且允许列表中给出的多个水果都带有抱子甘蓝,如下所示。
In: Apple apple apple what is a watermelon have to do to get an apple?
Out: Brussel sprouts apple apple what is a watermelon have to do to get an apple?
In: The apple likes orange
Out: The brussel sprouts likes orange
现在我正在弄乱下面的这段代码,但这只适用于一种水果,我需要同时检查所有七个,看看哪个是第一个,然后将其替换。
print sentence.replace("apple", "brussel sprouts", 1)
我该怎么做?
最佳答案
通过 re.sub
。 (.*?)
首先有助于捕获第一个水果之前的所有字符。模式 (?:Watermelon|Pear|Peach|Orange|Apple|Banana|Grapes)
匹配第一个水果名称。因此,将匹配的字符替换为组索引 1 内的字符将为您提供所需的输出。
>>> import re
>>> s = "Apple apple apple what is a watermelon have to do to get an apple?"
>>> re.sub(r'(?i)^(.*?)\b(?:Watermelon|Pear|Peach|Orange|Apple|Banana|Grapes)\b', r'\1brussel sprouts', s)
'brussel sprouts apple apple what is a watermelon have to do to get an apple?'
>>> re.sub(r'(?i)^(.*?)\b(?:Watermelon|Pear|Peach|Orange|Apple|Banana|Grapes)\b', r'\1brussel sprouts', 'The apple likes orange')
'The brussel sprouts likes orange'
(?i)
调用了不区分大小写的修饰符,它强制正则表达式引擎进行不区分大小写的匹配。
关于Python:用另一个词替换出现的第一个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400423/