【发布时间】:2020-06-27 09:55:57
【问题描述】:
我正在尝试创建一个函数,该函数将从文本列表中查找项目,如果找到匹配项,则应将文本中找到的单词更改为“---”。
lst = ["str1", "str2", "str3"]
def censor_func_comp(email,lst):
for words in lst:
censored_text = email
if words in censored_text:
return censored_text.replace(str(words), "---")
return censored_text
例如,我在列表中设置了三个项目,并且该功能正常工作,但仅针对列表中的第一项,而对其他两项则不起作用,我不明白为什么。
请不要给我完整的解决方案,我只需要了解为什么该功能不适用于列表中的所有项目。
【问题讨论】:
-
由于您不希望有一个完整的解决方案,这就是问题所在:如果只找到一个单词,则返回替换的文本。这就是为什么不会在电子邮件中搜索后续单词的原因。使用您的解决方案,您应该在电子邮件中替换并在最后返回电子邮件。
-
@JürgenBayer 嗯...所以代码应该如下所示:对于 lst 中的单词:如果电子邮件中的单词:email.replace(str(words), "---") 返回电子邮件?不幸的是,它根本不起作用
-
if words in censored_text:语句返回被替换的字符串并停止迭代,但它应该在替换字符串中的单词时继续循环。目前如果第一项符合条件,将返回第一个替换的结果(只需删除第一个return语句,censored_text = email是不相关的赋值)。
标签: python-3.x string str-replace