gpt4 book ai didi

Python 3 从辩论文件中提取候选词

转载 作者:行者123 更新时间:2023-11-28 17:49:20 25 4
gpt4 key购买 nike

这是我的第一篇文章,所以如果我做错了什么,我很抱歉。就是说,我搜索了这个问题并发现了类似的问题,但由于 OP 没有提供足够的信息而从未得到回答。这也是作业,所以我只是在寻找提示。我真的很想自己得到这个。

我需要阅读辩论文件 (.txt),然后拉取并存储一位候选人说要放入词云中的所有台词。文件格式应该有帮助,但我不知道如何做到这一点。提示是每次一个新人说话时,他们的名字后跟一个冒号是第一行中的第一个词。但是,候选人的数据可以跨越多行。我应该分别存储每个人的台词。这是文件的示例:

LEHRER: This debate and the next three -- two presidential, one vice presidential -- are sponsored by the Commission on Presidential Debates. Tonight's 90 minutes will be about domestic issues and will follow a format designed by the commission. There will be six roughly 15-minute segments with two-minute answers for the first question, then open discussion for the remainder of each segment.

Gentlemen, welcome to you both. Let's start the economy, segment one, and let's begin with jobs. What are the major differences between the two of you about how you would go about creating new jobs?

LEHRER: You have two minutes. Each of you have two minutes to start. A coin toss has determined, Mr. President, you go first.

OBAMA: Well, thank you very much, Jim, for this opportunity. I want to thank Governor Romney and the University of Denver for your hospitality.

There are a lot of points I want to make tonight, but the most important one is that 20 years ago I became the luckiest man on Earth because Michelle Obama agreed to marry me.

到目前为止,这是我所拥有的功能:

def getCandidate(myFile):    
file = open(myFile, "r")
obama = []
romney = []
lehrer = []
file = file.readlines()

我只是不确定如何遍历数据以正确分隔每个人的话。我创建了一个虚拟文件来创建词云,我可以做到这一点,所以我想知道的是如何提取我需要的信息。

谢谢!如果我可以提供更多信息,请告诉我。这是 Python 入门类(class)。

编辑:从响应中添加的新代码。这在一定程度上起作用,但只捕获每个候选人的第一行回应,而不是他们的整个回应。我需要编写代码,继续存储该候选人下的每一行,直到新名称出现在行首。

def getCandidate(myFile, candidate):   
file = open(myFile, "r")
OBAMA = []
ROMNEY = []
LEHRER = []
file = file.readlines()
for line in file:
if line.startswith("OBAMA:"):
OBAMA.append(line)
if line.startswith("ROMNEY:"):
ROMNEY.append(line)
if line.startswith("LEHRER:"):
LEHRER.append(line)
if candidate == "OBAMA":
return OBAMA
if candidate == "ROMNEY":
return ROMNEY

编辑:我现在有一个新问题。我如何概括该文件,以便我可以打开两个人和主持人之间的任何辩论文件?我在这方面遇到了很多麻烦。

有人提示我查看行首并查看每行的最后一个单词是否以“:”结尾,但我仍然不确定如何执行此操作。我尝试用空格分隔每一行,然后查看该行中的第一项,但就我所知。

最佳答案

提示是这样的:拆分行后,遍历它们并使用字符串函数 startswith 检查每个候选项,然后追加。

对文件的迭代非常简单:

for row in file:
do_something_with_row

编辑:为了在找到新候选者之前继续放置线条,您必须跟踪最后看到的候选者的变量,如果您在该行的开头没有找到任何匹配项,您将坚持使用与之前相同的候选者。

if line.startswith('OBAMA'):
last_seen=OBAMA
OBAMA.append(line)
elif blah blah blah

else:
last_seen.append(line)

顺便说一下,我会改变函数的定义:与其获取候选人的名字并只返回他的台词,不如返回一个字典,以候选人的名字作为键,他们的台词作为值,所以你不需要多次解析文件。当您要处理更大的文件时,这可能是您的救命稻草。

关于Python 3 从辩论文件中提取候选词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com