Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:用另一个单词替换出现的第一个单词_Python_String_Replace - Fatal编程技术网

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'

?我调用了不区分大小写的修饰符,它强制正则表达式引擎进行不区分大小写的匹配。

您的预期输出是什么?它现在显示我应该期望的。您的预期输出是什么?它现在显示我应该期望的。谢谢,这很有帮助!谢谢,这很有帮助!