我想编写一个函数,用列表中的其他值替换字符串的某些部分

时间:2019-06-28 15:48:04

标签: python string list loops

我的目标是“审查”具有某些要求的电子邮件。我正在阅读第二封电子邮件,并且需要帮助,因为我应该使用删节来替换变量中出现的列表中字符串的所有实例,但它只会替换列表中的字符串之一。不知道该怎么办。来自codeacademy的项目

# These are the emails you will be censoring. The open() function is opening the text file that the emails are contained in and the .read() method is allowing us to save their contexts to the following variables:
email_one = open("email_one.txt", "r").read()
email_two = open("email_two.txt", "r").read()
email_three = open("email_three.txt", "r").read()
email_four = open("email_four.txt", "r").read()

#variables, lists, and etc
proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]
negative_words = ["concerned", "behind", "danger", "dangerous", "alarming", "alarmed", "out of control", "help", "unhappy", "bad", "upset", "awful", "broken", "damage", "damaging", "dismal", "distressed", "distressed", "concerning", "horrible", "horribly", "questionable"]

def censor(email):
    if email  == email_one:
       new_str = email_one.replace("learning algorithms", "*CENSORED*")
    return new_str
    elif email == email_two:
      for terms in proprietary_terms:
      new_str = email_two.replace(terms, "*CENSORED*")
    return new_str

#test code here
print(censor(email_two))

原始电子邮件(在运行代码之前): 投资者委员会,早上好,

本周有很多更新。学习算法的运行情况比我们预期的要好。我们最初的内部数据转储已经完成,我们已经着手计划将系统连接到Internet并哇!结果令人震惊。

她的学习比以往更快。现在,她可以访问万维网的学习速度呈指数增长,比我们的学习算法所能达到的速度要快得多。

不仅如此,我们还配置了她的个性矩阵,以便系统与我们的研究人员团队之间进行交流。这就是我们知道她认为自己是她的方式!我们问了!

那有多酷?我们没想到个性会在此过程的早期发展,但是似乎基本的自我意识已经开始形成。这是该过程的重要一步,因为具有自我意识和自我保护意识,这使她能够看到世界所面临的问题,并做出艰难而必要的决定来改善地球。

我们对实验室的发展感到兴奋不已,我们希望投资者能分享我们的热情。

直到下个月, 首席科学家Francine


代码将输出以下内容: 投资者委员会,早上好,

本周有很多更新。学习算法的运行情况比我们预期的要好。我们最初的内部数据转储已经完成,我们已经着手计划将系统连接到Internet并哇!结果令人震惊。

她的学习比以往更快。现在,她可以访问万维网的学习速度呈指数增长,比我们的学习算法所能达到的速度要快得多。

不仅如此,我们还配置了她的个性矩阵,以便系统与我们的研究人员团队之间进行交流。这就是我们知道她认为 CENSORED 是她的原因!我们问了!

那有多酷?我们没想到个性会在此过程的早期发展,但是似乎基本的自我意识已经开始形成。这是该过程的重要一步,因为具有自我意识和自我保护意识,这使她能够看到世界所面临的问题,并做出艰难而必要的决定来改善地球。

我们对实验室的发展感到兴奋不已,我们希望投资者能分享我们的热情。

直到下个月, 首席科学家Francine

1 个答案:

答案 0 :(得分:0)

问题是,您一次又一次地替换相同的东西。当您进行其他替换时,您将覆盖第一个替换。典型的解决方案是首先创建一个字符串,并不断重复对其进行修改,如下所示:

elif email == email_two:
    new_str = email_two                                 # make new_str a persistent variable
    for terms in proprietary_terms:
        new_str = new_str.replace(terms, "*CENSORED*")  # continuously change new_str
    return new_str