python - 我想将一些文本附加到新列表中,直到列表符合特定字符串
问题描述
我正在预处理特朗普-希拉里辩论脚本文本以创建 3 个列表,其中包括每个 3 人的说法。整个脚本是 1046 个列表
部分文字如下
for i in range(len(loaded_txt)):
print("load_text[i]",load_text[i])
loaded_txt[i] TRUMP:不,它会完全帮助你。我们必须做的一件事:废除并取代被称为奥巴马医改的灾难。它正在摧毁我们的国家。它正在摧毁我们的企业、我们的小企业和我们的大企业。我们必须废除和取代奥巴马医改。
加载的_txt[i]
load_txt[i] 你看看在 17 年将花费我们的数字,这是一场灾难。如果我们不废除和替换——现在,它可能会因自身的重量而死。但奥巴马医改必须取消。这是——保费上涨了60%、70%、80%。明年他们将上涨超过 100%。
加载的_txt[i]
load_txt[i] 我真的很高兴保费已经开始了——至少人们看到了正在发生的事情,因为她想保留奥巴马医改,她想让它变得更糟,而且不能变得更糟。以最昂贵的价格提供糟糕的医疗保健。我们必须废除和取代奥巴马医改。
加载的_txt[i]
load_txt[i] WALLACE:克林顿国务卿,同样的问题,因为在这一点上,社会保障和医疗保险将用完,信托基金将用完钱。作为总统,你会招待吗?你会考虑一个大交易,包括增加税收和削减福利的交易,以试图挽救这两个项目吗?
我试图将列表附加到 TRUMP_script_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])
但问题是没有名字的列表。但是没有名字的文字应该是特朗普的说法,如果它是在带有特朗普名字的文字下,UNTIL list 遇到包含非特朗普名字的文字(华莱士或克林顿)
我尝试了“while”循环,如果列表包含其他名称(华莱士,克林顿),该循环将被终止。但未能实施。
我怎样才能实现这个算法或任何其他好主意?
解决方案
定义函数以获取标题:
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_title() 获取一系列标题来尝试,以及最后一个标题是什么。如果出现任何标题,则返回该标题。否则,它返回之前的标题
我将初始标题初始化为''
. 只要第一行文本中有标题,这将起作用。如果没有,它会抛出一个错误。对此的修复取决于您希望它如何实现。您只是不想考虑这种情况(表示loaded_txt 中的错误,或可能的标题列表)?是否要将特定人员的姓名设置为默认的初始头衔?你想跳过行直到最初的标题吗?有很多方法,我不确定你更喜欢哪一种
推荐阅读
- mysql - MySQL 错误与 CREATE TABLE
- javascript - 下拉货币选择器
- javascript - 错误 AngularJs:无法读取未定义的属性“then”
- c# - 如何反编译.net dll到项目c# [CompilerGenerated]
- javascript - React/Redux 渲染一个每秒更新的列表
- redux - Redux:组合关系需要状态规范化吗?
- clojure - 为什么某些 clojure 函数名称的末尾或开头都有点?
- c++ - 为什么我的 .cpp 文件不能解析在我的 .h 文件中声明的变量?
- hybris - 未创建目录名称 (hybris)
- python - 在这个 __getitem__ 方法中,我如何添加一个部分,以便如果 dict 没有为该索引指定值,它返回 0?