我有七个水果,你可以在一个句子中使用,你可以用你想要的多次写一次。它们是Watermelon
,Pear
,Peach
,Orange
,Apple
,Banana
和Grapes
。我要报告这句话,并且还要替换出来的第一个水果,无论这个词是多次显示还是多个水果都在允许列表中给出,如下所示。
在:苹果苹果苹果什么是西瓜必须做的苹果?
出来:布鲁塞尔发芽苹果苹果什么是西瓜必须要做的 苹果?在:苹果喜欢橙色
出:布鲁塞尔豆芽喜欢橙色
现在我正在弄乱下面这段代码,但这只适用于一个水果,我需要同时检查所有七个,看看哪一个是第一个并取而代之。
print sentence.replace("apple", "brussel sprouts", 1)
我该怎么做?
答案 0 :(得分:3)
通过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)
称为不区分大小写的修饰符,它强制正则表达式引擎执行不区分大小写的匹配。
答案 1 :(得分:1)
这里有两个不同的问题;第一个是find
'水果的位置,如果它存在于字符串中。第二个是replace
首先找到的人。由于我不想为您解决您的家庭作业问题,我只会向您展示一个小例子,让您开始朝着正确的方向前进。
sentence = "Apple apple apple what is a watermelon have to do to get an apple?".lower() # We lowercase it so that "Apple" == "apple", etc.
index = sentence.find("apple")
print(index)
>>> 0
index = sentence.find("banana") # This is what happens when searching for fruit not in sentence
print(index)
>>> -1
现在您了解find
,您应该能够轻松地找出如何合并一系列find
和replace
操作以获得所需的输出。