代码之家  ›  专栏  ›  技术社区  ›  kakanaldo

我想在新列表中添加一些文本,直到列表满足特定字符串

  •  -1
  • kakanaldo  · 技术社区  · 6 年前

    我正在对特朗普-希拉里辩论脚本文本进行预处理,以创建3个列表,其中包括每3个人的发言。 整个脚本是1046个列表

    部分文本如下

    for i in range(len(loaded_txt)):
        print("load_text[i]",load_text[i])
    

    特朗普:不,这对你完全有帮助。我们必须做一件事:废除并取代被称为奥巴马医改的灾难。它正在摧毁我们的国家。它正在摧毁我们的企业、我们的小企业和我们的大企业。我们必须废除并取代奥巴马医改。

    已加载\u txt[i]

    你看看17年我们将要花费多少钱,这是一场灾难。如果我们不废除和取代——现在,它可能会因自身的重量而死亡。但奥巴马医改必须取消。保费上涨了60%,70%,80%。明年他们将上涨100%以上。

    已加载\u txt[i]

    我真的很高兴保费已经开始了——至少人们看到了发生了什么,因为她想保持奥巴马医改,她想让它变得更糟,而且不会变得更糟。以最昂贵的价格享受糟糕的医疗保健。我们必须废除并取代奥巴马医改。

    已加载\u txt[i]

    华莱士:克林顿国务卿,还有同样的问题,因为在这一点上,社会保障和医疗保险将耗尽,信托基金将耗尽资金。作为总统,你会考虑——你会考虑一个大交易,一个包括增税和削减福利的交易,以挽救这两个项目吗?


    我试图将列表附加到TRUMP\u script\u list=[]中,如果列表中有“TRUMP:”

    TRUMP_script_list=[]
    
    for i in range(len(loaded_txt)):
        if "TRUMP:" in loaded_txt[i]:
            TRUMP_script_list.append(loaded_txt[i])
    

    但问题是名单上没有名字。 但是,如果文本中有特朗普的名字,那么没有名字的文本应该是特朗普的话,直到列表中出现的文本中没有特朗普的名字(华莱士或克林顿)

    我尝试了“while”循环,如果列表中包含其他名字(华莱士、克林顿),该循环将被终止。但未能实施。

    我如何实现这个算法或其他好主意?

    1 回复  |  直到 6 年前
        1
  •  0
  •   David L    6 年前

    定义获取标题的函数:

    def get_title(text, titles, previous_title):
        for title in titles:
            if title in text:
                return title
        return previous_title
    

    定义引用词典:

    name_script_list = {'TRUMP:':TRUMP_script_list, 'HILLARY:':HILLARY_script_list, 'WALLACE:':WALLACE_script_list}
    titles = set(name_script_list.keys())
    title = ''
    

    遍历for循环中的列表:

    for text in loaded_txt:
        title = get_title(text, titles, title)
        name_script_list[title].append(text)
    

    基本上,其想法是get\u title()获取一系列要尝试的标题,以及最后一个标题是什么。如果出现任何标题,它将返回该标题。否则,它将返回先前的标题

    我将初始标题初始化为 '' 。只要文本的第一行有标题,这就行。如果没有,它将抛出一个错误。对此的修复取决于您希望它的实现方式。您是否只是不想考虑这种情况(表明loaded\u txt或可能的标题列表中存在错误)?是否要将特定人员的姓名设置为默认的初始标题?是否要跳过行直到初始标题?有很多种方法,我不确定你更喜欢哪一种