2016-04-26 9 views
-2

Ich habe eine Debatte Datei, die wie folgt aussieht (fett wird für klarere Lesung ergänzt):Schreibleitungen auf Neue Datei aus der Basis-Lautsprecher

TAPPER: Senator Rubio?
RUBIO: Jede Wahl ist wichtig. Ich glaube, das ist die wichtigste Wahl in einer Generation. Denn was bei dieser Wahl auf dem Spiel steht, ist nicht einfach, welche Partei wird verantwortlich sein oder welcher Kandidat gewinnt. Es geht um unsere Identität als Nation und als Volk.
RUBIO: Seit über zwei Jahrhunderten ist Amerika eine außergewöhnliche Nation. Und nun ist es an der Zeit, dass diese Generation tut, was sie tun muss, um es so zu halten. Wenn wir bei dieser Wahl die richtige Wahl treffen, werden unsere Kinder die freiesten und wohlhabendsten Amerikaner sein, die jemals gelebt haben. Und das 21. Jahrhundert wird ein neues amerikanisches Jahrhundert werden.
(APPLAUSE)
TAPPER: Senator Cruz?
CRUZ: Vor 59 Jahren begrüßte Florida meinen Vater in Amerika, als er die Fähre von Kuba nach Key West verließ. Er war 18. Er war voller Hoffnungen und Träume, und doch war er im freiesten Land auf der Erde.
Bei dieser Wahl geht es in dieser Debatte nicht um Beleidigungen. Es geht nicht um Angriffe. Es geht nicht um irgendwelche Personen auf dieser Bühne. Bei dieser Wahl geht es um dich und deine Kinder. Es geht um die Freiheit, die Amerika immer hatte und um sicherzustellen, dass diese Freiheit für die nächste Generation da ist, dass wir verhindern, dass Washington den hart arbeitenden Steuerzahlern Amerikas im Weg steht.
(APPLAUSE)
TAPPER: Herr Trump?
TRUMP: Eines der größten politischen Ereignisse in der Welt passiert derzeit mit der Republikanischen Partei. Millionen und Abermillionen von Menschen gehen zur Wahl und sie wählen. Sie stimmen aus Begeisterung ab. Sie wählen aus Liebe. Einige dieser Leute haben, ehrlich gesagt, nie zuvor gewählt - 50 Jahre alt, 60 Jahre alt, 70 Jahre alt - haben noch nie zuvor gewählt. Wir nehmen Leute von der Democrat Party. Wir nehmen Leute als Unabhängige, und sie kommen alle raus und die ganze Welt spricht darüber. Es ist sehr aufregend. Ich denke, offen gesagt, das republikanische Establishment oder was immer Sie es nennen wollen, sollte sich umarmen, was passiert. Wir haben Millionen von zusätzlichen Menschen beitreten. Wir werden die Demokraten schlagen. Wir werden Hillary oder wer immer es auch sein mag bezwingen. Und wir werden sie gut schlagen.
(APPLAUSE)

ich zwei Dateien aus dieser eine Textdatei erstellen möchten: eine mit der ganzen Rede, die Cruz sagte, die andere eine Datei, die nur den Text Trump gesagt hat, ist. Irgendeine Idee wie? Ich habe den folgenden Regex ausprobiert, der mir erlaubt, den Text jeder Zeile zu finden, die der Kandidat gesagt hat, aber nicht die folgende Zeile, wenn sie von einem Zeilenumbruch unterbrochen wird.

import re 

with open('RepDebate_FL.txt') as f: 
    for line in f: 
     cruz_regex = str(re.findall(r'CRUZ:.*', line)) 
     trump_regex = str(re.findall(r'TRUMP:.*', line)) 
     if cruz_regex is not None: 
      print(cruz_regex) 

Bedeutung ich diese Linie erhalten:

[ 'CRUZ: Neunundfünfzig Jahre, begrüßte Florida meinen Vater nach Amerika, als er die Fähre von Kuba auf Key West ausstieg. Er war 18. Er war voller Hoffnungen und Träume, und doch war er im freiesten Land auf der Erde.‚]

Aber das nächste leer ist, weil es von Newline gebrochen hat und beginnt nicht mit 'CRUZ:':

[]

Jedwedes Hilfe ist willkommen, TIA.

+2

Verwenden Sie keine Regexes, wirklich. Lies einfach eine Zeile, überprüfe, ob sie mit trump/cruz beginnt und schreibe in die entsprechende Datei, wenn ja. Behalten Sie den Namen des letzten Sprechers im Auge, und halten Sie den Text in der gleichen Datei, bis sich der Sprecher ändert. –

+0

es könnte sich lohnen, etwas mit 're.split (r"^[A-Z] {2,} ", ...) zu machen, aber ich habe momentan keine Zeit es zu testen. –

+0

@MarcB Wie würde ich überprüfen, ob es mit Trump/Cruz beginnt? – dataelephant

Antwort

1

Sie können hierfür re.split und das itertools grouper Rezept verwenden.

import itertools 
import re 

def grouper(iterable, n, fillvalue=None): 
    iters = [iter(iterable)] * n 
    return itertools.zip_longest(*iters, fillvalue=fillvalue) 

s = filter(None, re.split(r"([A-Z]+:)", the_text)) 
pairs = grouper(s, 2) 

diese Blätter pairs wie:

('TAPPER:', ' Senator Rubio?\n') 
('RUBIO:', " Every election is important. I believe this is the most important election in a generation. Because what's at stake in this election is not simply what party is going to be in charge or which candidate wins. What's at stake is our identity as a nation and as a people.\n") 
('RUBIO:', ' For over two centuries, America has been an exceptional nation. And now the time has come for this generation to do what it must do to keep it that way. If we make the right choice in this election, our children are going to be the freest and most prosperous Americans that have ever lived. And the 21st century is going to be a new American century.\n(APPLAUSE)\n') 
('TAPPER:', ' Senator Cruz?\n') 
('CRUZ:', " Fifty-nine years ago, Florida welcomed my father to America as he stepped off the ferry boat from Cuba onto Key West. He was 18. He was filled with hopes and dreams, and yet he was in the freest land on the face of the earth.\nThis election, this debate is not about insults. It's not about attacks. It's not about any of the individuals on this stage. This election is about you and your children. It's about the freedom America has always had and making sure that that freedom is there for the next generation, that we stop Washington from standing in the way of the hard-working taxpayers of America.\n(APPLAUSE)\n") 
('TAPPER:', ' Mr. Trump?\n') 
('TRUMP:', " One of the biggest political events anywhere in the world is happening right now with the Republican Party. Millions and millions of people are going out to the polls and they're voting. They're voting out of enthusiasm. They're voting out of love. Some of these people, frankly, have never voted before - 50 years old, 60 years old, 70 years old - never voted before. We're taking people from the Democrat Party. We're taking people as independents, and they're all coming out and the whole world is talking about it. It's very exciting. I think, frankly, the Republican establishment, or whatever you want to call it, should embrace what's happening. We're having millions of extra people join. We are going to beat the Democrats. We are going to beat Hillary or whoever it may be. And we're going to beat them soundly.\n(APPLAUSE)") 

Dann einfach wiederholen wir und Lautsprecher Namen zu überprüfen.

for speaker, body in pairs: 
    if "TRUMP" in speaker: 
     # write body to trump file 
    elif "CRUZ" in speaker: 
     # write body to cruz file 
Verwandte Themen