(Verwendung Python 2,7)Extrahieren von Text zwischen den Ziffern - Python
einen Vertrag vor, das unter anderem Text, Textblocks von Abschnittsnummern hat, getrennt. Ich versuche, den Text jedes Abschnitts zu extrahieren und in ein neues Dokument zu schreiben. Wenn also ein Vertrag mit zweihundert Seiten dreißig Abschnitte hat, die durch Abschnittsnummern getrennt sind, möchte ich diese dreißig Abschnitte in einem neuen Dokument haben.
Ich schaute auf diese Antwort Extracting parts of text between specific delimiters from a large text file with custom delimiters and writing it to another file using Python, aber es schien nicht zu tun, was ich tun möchte.
Ein Beispiel dafür, was ich versuche, den Text zwischen den nummerierten Abschnitten (ein großer Bonus wäre, den Abschnittskopf neben dem nummerierten Abschnitt) zu extrahieren wäre, d.h .:
1.2.3.4. Ein Abschnitt
Einige Text. Ein anderer Text auch. Und Zeug. Und noch mehr Text in der nächsten Zeile.
1.2.3.5. Der nächste Abschnitt
So viel mehr Text, mit Kommas und Zeug. Sogar Zeilenumbrüche und was nicht.
1.2.3.6. Einige Abschnitte sind wirklich toll
Willkommen in diesem Abschnitt. Was wahrscheinlich besser ist als andere. Und ich kann nicht einmal anfangen zu erklären, wie großartig es ist.
1.2.3.7. Was? Ein neuer Abschnitt?
Dang richtig, es ist ein neuer Abschnitt! Bist du nicht bereit dafür? So viele neue Abschnitte können für Text verwendet werden, den Sie nie lesen werden.
Im Idealfall werde ich in einer einzigen Datei lesen und eine einzige Datei ausgeben. Bisher habe ich Variationen des Codes vergeblich versucht. Ich weiß, dass dies fehlt der Schreibe-zu-Ausgabe-Teil (noch nicht dort angekommen):
import codecs
import re
regex = r'\D(?!\d)'
# read a contract in
with codecs.open("/Users/someuser/x/y/blah.txt", "r","utf-8") as ins:
text = ins.read()
# perform magics
output = re.findall(regex, text)
output
kann nicht nur die Datei Zeile für Zeile lesen, und wenn die Zeile beginnt mit 'r (\ d \.) [4]' Sie das Stück Text mit einem leeren String ersetzen und mach weiter? –
@MauriceReeves Die Verträge haben also viele andere Texte, die nicht durch nummerierte Abschnitte eingeklammert sind. Denken Sie an so etwas wie einen Mietvertrag ... Sie haben viel Text, der das Arrangement, Partys usw. beschreibt, aber auch eine sehr spezifische, nummerierte Sektionssprache (ich möchte nur das Letztere). Ich denke, wenn ich die Ersatz-Option nehme, die Sie beschreiben, würde ich mit jedem Text im Dokument enden, was ich nicht anstrebe. – nacc
Okay, gut genug, aber nachdem du den Abschnitt mit der letzten Nummer getroffen hast, wirst du trotzdem alles bekommen, was danach folgt. Sie könnten besser zwei Durchgänge auf dem Dokument machen. –