Сохранять и обновлять значения в dict при итерации на python - PullRequest
0 голосов
/ 06 мая 2018

Как лучше всего в этом случае хранить для каждого докладчика произносимый текст в форме диктовки или лучшего варианта? Я хочу сопоставить каждый произнесенный текст с каждым оратором, как эта попытка. Но результат не такой, как я ожидал.

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.'}

В файле динамик выступает несколько раз. Я хотел бы назначить устные тексты соответствующему докладчику. То есть всякий раз, когда появляется говорящий, обновляйте его в словаре, чтобы новый текст добавлялся без перезаписи старого.

Или я должен создать для каждого Спикера собственный дикт?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

В nametuple вы просто определяете имена полей (спикер, группа, текст). Эти поля могут быть любыми словарями.

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})
0 голосов
/ 06 мая 2018

Вы можете использовать namedtuple и создавать объекты динамиков. затем добавьте их в список. Здесь я пишу некоторый код, чтобы показать вам, как использовать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...