Python:用另一个单词替换出现的第一个单词
我有七种水果,你可以用在一个句子中,你可以用一种以上的水果来写,而且可以写很多遍。它们是西瓜、梨、桃、橘子、苹果、香蕉和葡萄。我想把这句话报告回去,并替换第一个出来的水果,不管这个词是否被多次显示,并且在允许列表中有多个水果与布鲁塞尔芽菜一起出现,如下所示 苹果一个西瓜要做什么才能得到一个苹果 出题:布鲁塞尔发芽苹果西瓜要想长出西瓜,必须做些什么 苹果 苹果喜欢橙色 外:布鲁塞尔芽像橘子 现在我正在处理下面的代码,但这只适用于一种水果,我需要同时检查所有七种水果,看看哪一种是第一个,并将其替换Python:用另一个单词替换出现的第一个单词,python,string,replace,Python,String,Replace,我有七种水果,你可以用在一个句子中,你可以用一种以上的水果来写,而且可以写很多遍。它们是西瓜、梨、桃、橘子、苹果、香蕉和葡萄。我想把这句话报告回去,并替换第一个出来的水果,不管这个词是否被多次显示,并且在允许列表中有多个水果与布鲁塞尔芽菜一起出现,如下所示 苹果一个西瓜要做什么才能得到一个苹果 出题:布鲁塞尔发芽苹果西瓜要想长出西瓜,必须做些什么 苹果 苹果喜欢橙色 外:布鲁塞尔芽像橘子 现在我正在处理下面的代码,但这只适用于一种水果,我需要同时检查所有七种水果,看看哪一种是第一个,并将其替换
print sentence.replace("apple", "brussel sprouts", 1)
如何做到这一点?这里有两个不同的问题;第一个是“如果水果存在于字符串中,则标记其位置”。第二个是替换第一个被发现的人。既然我不想帮你解决家庭作业问题,我就给你举个小例子,让你从正确的方向开始
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操作以获得所需的输出。这里有两个独立的问题;第一个是“如果水果存在于字符串中,则标记其位置”。第二个是替换第一个被发现的人。既然我不想帮你解决家庭作业问题,我就给你举个小例子,让你从正确的方向开始
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
>>> 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'
既然您已经了解了find,那么您应该能够很容易地找到如何组合一系列find和replace操作以获得所需的输出。通过re.sub.*?在第一个有助于捕捉第一个水果之前的所有角色。西瓜、梨、桃子、橘子、苹果、香蕉、葡萄的图案与第一个水果名称相匹配。因此,通过将匹配的字符替换为组索引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'
?我调用了不区分大小写的修饰符,它强制正则表达式引擎进行不区分大小写的匹配。通过re.sub..*?在第一个有助于捕捉第一个水果之前的所有角色。西瓜、梨、桃子、橘子、苹果、香蕉、葡萄的图案与第一个水果名称相匹配。因此,通过将匹配的字符替换为组索引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'
?我调用了不区分大小写的修饰符,它强制正则表达式引擎进行不区分大小写的匹配。您的预期输出是什么?它现在显示我应该期望的。您的预期输出是什么?它现在显示我应该期望的。谢谢,这很有帮助!谢谢,这很有帮助!