我有成绩单,为了对每个发言者进行分析,我只需要将他们的单词添加到字符串中。我遇到的问题是每一行都不以音箱名称开头。 这是我的文本文件的片段
BOB: blah blah blah blah
blah hello goodbye etc.
JERRY:.............................................
...............
BOB:blah blah blah
blah blah blah
blah.
我想只收集所选扬声器中的单词(在本例中为bob)并将它们添加到字符串中,并从jerry和其他发言者中排除单词。有什么想法?
编辑:在段落之间和任何新发言人开始之前都有换行符。
答案 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": ['.............................................', '...............']
}