Mit Python möchte ich alle Zeilen in einer Textdatei, die hinter einer bestimmten Zeichenfolge stehen, in ein Wörterbuch einlesen. Ich möchte das über Tausende von Textdateien machen.
Ich bin in der Lage, die bestimmte Zeichenfolge ("Abstract") zu identifizieren und auszudrucken, indem ich den folgenden Code verwende (erhalten von dieser Stapelüberlaufantwort ):
%Vor%Aber wie sage ich Python, um die Zeilen zu lesen, die nur nach der Zeichenfolge kommen?
Starten Sie einfach eine andere Schleife, wenn Sie die gewünschte Zeile erreichen:
%Vor%Ein Dateiobjekt ist ein eigener Iterator. Wenn wir also die Zeile mit Abstract erreichen, setzen wir unsere Iteration von dieser Zeile fort, bis wir den Iterator verbraucht haben.
Ein einfaches Beispiel:
%Vor%Sie können auch itertools.dropwhile verwenden, um die Zeilen bis zu diesem Punkt zu verwenden du willst.
%Vor% Sie können hier itertools.dropwhile
und itertools.islice
verwenden, ein Pseudo-Beispiel:
Nur um zu verdeutlichen, "liest" Ihr Code bereits alle Zeilen. Um zu beginnen, Zeilen nach einem bestimmten Punkt "aufmerksam zu machen", können Sie einfach ein boolesches Flag setzen, um anzugeben, ob Zeilen ignoriert werden sollen, und es an jeder Zeile überprüfen.
%Vor% Wenn es Ihnen nichts ausmacht, den Code etwas neu anzuordnen, können Sie stattdessen auch zwei Partialloops verwenden: eine Schleife, die endet, sobald Sie Ihre Triggerphrase gefunden haben ( 'Abstract'
), und eine, die alles Folgende liest Linien. Dieser Ansatz ist ein wenig sauberer (und ein ganz kleines bisschen schneller).
Der Grund dafür ist, dass das von open
zurückgegebene Dateiobjekt sich wie ein Generator verhält und nicht etwa , eine Liste: Es erzeugt nur Werte, wie sie angefordert werden. Wenn die erste Schleife stoppt, bleibt die interne Position der Datei am Anfang der ersten "ungelesenen" Zeile. Das heißt, wenn Sie die zweite Schleife eingeben, ist die erste Zeile, die Sie sehen, die erste Zeile nach der, die break
ausgelöst hat.
Wenn ich eine Vermutung über die Art und Weise, wie das Wörterbuch beteiligt ist, mache, würde ich es so schreiben:
%Vor%So enthält Ihr Wörterbuch für jede Datei ein Tupel von Zeilen.
Dies funktioniert, weil die Schleife bis einschließlich der von Ihnen identifizierten Zeile liest und die verbleibenden Zeilen in der Datei bereit zum Lesen von f
bleibt.
Tags und Links python python-2.7 text-mining