Python:用另一个单词替换出现的第一个单词

时间:2015-02-08 23:05:04

标签: python string replace

我有七个水果,你可以在一个句子中使用,你可以用你想要的多次写一次。它们是WatermelonPearPeachOrangeAppleBananaGrapes。我要报告这句话,并且还要替换出来的第一个水果,无论这个词是多次显示还是多个水果都在允许列表中给出,如下所示。

  

在:苹果苹果苹果什么是西瓜必须做的苹果?

     出来:布鲁塞尔发芽苹果苹果什么是西瓜必须要做的   苹果?

     

在:苹果喜欢橙色

     

出:布鲁塞尔豆芽喜欢橙色

现在我正在弄乱下面这段代码,但这只适用于一个水果,我需要同时检查所有七个,看看哪一个是第一个并取而代之。

print sentence.replace("apple", "brussel sprouts", 1)

我该怎么做?

2 个答案:

答案 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,您应该能够轻松地找出如何合并一系列findreplace操作以获得所需的输出。