Ich lerne immer noch Python, und ich habe eine Frage, die ich nicht lösen konnte. Ich habe eine sehr lange Zeichenfolge (Millionen von Zeilen lang), die ich gerne in eine kleinere Stringlänge aufteilen würde, basierend auf einer bestimmten Anzahl von Vorkommen eines Delimeters.Python - Aufteilen einer großen Zeichenfolge nach Anzahl der Trennzeichen
Zum Beispiel:
ABCDEF
//
GHIJKLMN
//
OPQ
//
RSTLN
//
OPQR
//
STUVW
//
XYZ
//
In diesem Fall würde ich mag auf „//“ aufzuspalten basierte und eine Reihe von allen Zeilen vor dem n-ten Auftreten des delimeter zurückzukehren.
So eine Eingabe von // um 1 die Zeichenfolge Aufspalten zurückkehren würde:
ABCDEF
eine Eingabe durch // durch 2, um die Zeichenfolge zu spalten zurückkehren würde:
ABCDEF
//
GHIJKLMN
ein Eingang Spaltung der String durch // von 3 zurückkehren würde:
ABCDEF
//
GHIJKLMN
//
OPQ
Und so weiter ... jedoch, Die Länge der ursprünglichen 2 Millionen Zeile schien ein Problem zu sein, als ich einfach versuchte, den gesamten String und "//" zu teilen und einfach mit den einzelnen Indizes zu arbeiten. (Ich habe einen Speicherfehler erhalten) Vielleicht kann Python nicht so viele Zeilen in einem Split verarbeiten? Also kann ich das nicht tun.
Ich bin auf der Suche nach einer Möglichkeit, die ich brauche nicht die gesamte Zeichenfolge in hunderttausend Indexen zu teilen, wenn ich nur 100 brauche, sondern nur von Anfang an bis zu einem bestimmten Punkt, zu stoppen und zurückzukehren alles davor, was ich vermute, kann auch schneller sein? Ich hoffe, meine Frage ist so klar wie möglich.
Gibt es einen einfachen oder eleganten Weg, dies zu erreichen? Vielen Dank!
Warum verwenden Sie einen Generator, um die ersten n Elemente zu lesen, bis Sie die erforderliche Anzahl von "//" Trennzeichen lesen? So lesen Sie nur, was Sie brauchen –
Danke, ich werde auch einen Blick in Generatoren werfen, da ich mit ihnen nicht vertraut bin. – Indie
Bitte zeigen Sie, welchen Code Sie bisher ausprobiert haben. –