在python上迭代时在dict中存储和更新值

2024-05-21 08:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在这种情况下,最好的方法是什么,以听写的形式为每个说话者存储口语文本还是更好的选择?我想把每一段文字都映射到每一位演讲者身上,就像这样。但结果并不像我预期的那样。你知道吗

def speaker_texts(cleanedList):

    dictspeaker = {"Speaker": "", "Group": "", "Text": ""}

    pattern_speaker = r"([A-Z]+[a-z]*)([\s]*)(\([A-Z]*\))"

    for sent in cleanedList:
        speaker = re.findall(pattern_speaker, sent)

        for info in speaker:

            dictspeaker.update({"Speaker":info[0], "Group":info[2], "Text": sent})

输出:

{'Speaker': 'Rische', 'Group': '(KPD)', 'Text': ', Antragsteller: Meine Damen und \nHerren! Anläßlich der Regierungserklärung und \n\n\x0c\n\n30 \n\n(Rische) \nauch in der heutigen Debatte zum Flüchtlings-\nproblem wurden viele Worte über eine sinnvolle, \nden sozialen Belangen entsprechende Verwendung \nöffentlicher Mittel gesprochen. Di e Regierung gab \nin ihrem Programm zu verstehen, daß sie eine ver-\nantwortungsbewußte  Sozialpolitik  durchzuführen \ngedenke. Sie hat die Flüchtlingshilfe, den Woh-\nnungsbau, die Verbe.'}

在文件中,一位演讲者多次站出来。我想把演讲稿分配给各自的演讲者。也就是说,每当有说话人出现时,都要在字典中更新它,以便添加新文本而不覆盖旧文本。你知道吗

或者我应该为每个演讲者创造一个自己的口述吗?你知道吗


Tags: textin文本infoforgroupsentpattern
2条回答

您可能需要使用namedtuple并创建speaker对象。然后将它们添加到列表中。在这里,我编写了一些代码来演示如何使用nametuple。你知道吗

In [1]: from collections import namedtuple

In [2]: speaker = namedtuple('Speaker', 'speaker goroup text')

In [3]: speaker1 = speaker('Rische', 'KPD', "Antragsteller: Meine 
Damen")

In [4]: speaker1
Out[4]: Speaker(speaker='Rische', goroup='KPD', text='Antragsteller: 
Meine Damen')

In [5]: speaker1.text
Out[5]: 'Antragsteller: Meine Damen'

在nametuple中,您只需定义字段名(speaker、group、text)。这些字段可以像字典一样。你知道吗

In [19]: speaker = namedtuple('Speaker', 'speaker goroup text')

In [20]: text = {'a':1, 'b':2}

In [21]: speaker1 = speaker('Rische','KPD',text)

In [22]: speaker1
Out[22]: Speaker(speaker='Rische', goroup='KPD', text={'b': 2, 'a': 1})

相关问题 更多 >