首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3从辩论文件中提取候选词

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

Stack Overflow用户
提问于 2012-11-04 23:15:12
回答 1查看 309关注 0票数 3

这是我的第一篇帖子,所以如果我做错了什么,我很抱歉。尽管如此,我搜索了这个问题,发现了一些类似的问题,但由于OP没有提供足够的信息,这些问题从未得到回答。这也是家庭作业,所以我只是想找个提示。我真的很想靠我自己拿到这个。

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

莱勒:这次辩论和接下来的三场辩论--两位总统,一位副总统--是由总统辩论委员会赞助的。今晚的90分钟将讨论国内问题,并将遵循委员会设计的格式。第一个问题将有六个大约15分钟的片段,有两分钟的答案,然后对每个部分的其余部分进行公开讨论。 先生们欢迎你们俩。让我们开始经济,第一部分,让我们从就业开始。你们两人在如何创造新的就业机会方面有什么主要的区别? 你有两分钟的时间。你们每人有两分钟的时间开始。抛硬币决定了,总统先生,你先来。 奥巴马:嗯,非常感谢你,吉姆,给我这个机会。我要感谢罗姆尼州长和丹佛大学的盛情款待。 今晚我想表达很多观点,但最重要的一点是,20年前,我成为了世界上最幸运的人,因为米歇尔·奥巴马同意嫁给我。

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

代码语言:javascript
复制
def getCandidate(myFile):    
    file = open(myFile, "r")
    obama = []
    romney = []
    lehrer = []
    file = file.readlines()

我只是不知道如何迭代数据,以便正确地将每个人的单词分开。我创建了一个虚拟文件来创建单词云,我能够做到这一点,所以我想知道的是如何提取我需要的信息。

谢谢!如果我能提供更多的信息,请告诉我。这是Python的入门课程。

编辑:从响应中添加的新代码。这在某种程度上是可行的,但只抓住了每个候选人回答的第一行,而不是他们的全部回应。我需要编写代码,继续将每一行存储在该候选项下,直到新名称出现在行的开头。

代码语言:javascript
复制
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

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

有人给了我一个提示,让我看行的开头,看看每一行的最后一个字是否以":“结尾,但我还是不知道该怎么做。我试着在空格上分割每一行,然后查看行中的第一项,但这就是我所得到的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-04 23:45:01

提示是:在拆分行后,迭代它们并检查字符串函数startswith,然后追加它们。

文件的迭代非常简单:

代码语言:javascript
复制
for row in file:
    do_something_with_row

编辑:在找到新的候选人之前,要一直放行,你必须用最后看到的候选人的一个变量来跟踪,如果你在行的开头没有找到任何匹配,你必须和以前一样。

代码语言:javascript
复制
if line.startswith('OBAMA'):
    last_seen=OBAMA
    OBAMA.append(line)
elif blah blah blah

else:
    last_seen.append(line)

顺便说一句,我会更改函数的定义:与其取候选人的名字并只返回他的行,不如返回一个字典,其中的候选名作为键,它们的行作为值,这样您就不需要多次解析文件了。当您使用更大的文件时,这可能是一个救星。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13223971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档