只读取特定发言者的单词并将这些单词添加到列表中

时间:2015-12-02 10:22:43

标签: python string file

我有成绩单,为了对每个发言者进行分析,我只需要将他们的单词添加到字符串中。我遇到的问题是每一行都不以音箱名称开头。 这是我的文本文件的片段

BOB: blah blah blah blah
blah hello goodbye etc.

JERRY:.............................................
...............

BOB:blah blah blah
blah blah blah
blah.

我想只收集所选扬声器中的单词(在本例中为bob)并将它们添加到字符串中,并从jerry和其他发言者中排除单词。有什么想法?

编辑:在段落之间和任何新发言人开始之前都有换行符。

2 个答案:

答案 0 :(得分:1)

每次演讲者开始讲话时,请保持当前音频并根据此演讲者决定做什么。读取线,直到发言者改变。

答案 1 :(得分:1)

使用正则表达式是最好的方法。当您多次使用它时,您可以通过编译来节省一些处理,然后再使用它来匹配每一行。

import re

speaker_words = {}
speaker_pattern = re.compile(r'^(\w+?):(.*)$')

with open("transcript.txt", "r") as f:
        lines = f.readlines()
        current_speaker = None
        for line in lines:
                line = line.strip()
                match = speaker_pattern.match(line)
                if match is not None:
                        current_speaker = match.group(1)
                        line = match.group(2).strip()
                        if current_speaker not in speaker_words.keys():
                                speaker_words[current_speaker] = []
                if current_speaker:
                        # you may want to do some sort of punctuation filtering too
                        words = [word.strip() for word in line.split(' ') if len(word.strip()) > 0]
                        speaker_words[current_speaker].extend(words)

print speaker_words

这输出以下内容:

{
    "BOB": ['blah', 'blah', 'blah', 'blah', 'blah', 'hello', 'goodbye', 'etc.', 'blah', 'blah', 'blah', 'blah', 'blah', 'blah', 'blah.'],
    "JERRY": ['.............................................', '...............']
}