Eine Zeichenfolge basierend auf einem bestimmten Satz von Wörtern teilen

7

Ich habe eine Liste von Strings wie diese,

%Vor%

Angesichts einer Keyword-Liste wie ['for', 'or', 'and'] möchte ich in der Lage sein, die Liste in eine andere Liste zu zerlegen. Wenn die Keyword-Liste in der Zeichenfolge vorkommt, teile sie in mehrere Teile auf.

Zum Beispiel würde die obige Menge in

aufgeteilt werden %Vor%

Zur Zeit habe ich jede innere Zeichenkette durch Unterstreichung getrennt und habe eine for-Schleife, die nach einem Index eines Schlüsselwortes sucht, und dann die Zeichenketten durch Unterstreichung neu kombiniert. Gibt es einen schnelleren Weg, dies zu tun?

    
SharpObject 22.12.2015, 07:15
quelle

4 Antworten

6
%Vor%

gibt Ihnen die gewünschte Ausgabe für das bereitgestellte Beispiel-Dataset

eigentlich mit den _ Trennzeichen, die Sie nicht wirklich nach Länge sortieren müssen, damit Sie einfach

tun können %Vor%     
Joran Beasley 22.12.2015, 07:26
quelle
6
%Vor%

Um sie zu einer einzigen Liste zusammenzufassen, können Sie

verwenden %Vor%     
Tim Pietzcker 22.12.2015 07:24
quelle
6

Sie könnten einen regulären Ausdruck verwenden:

%Vor%

Das Muster wird dynamisch aus Ihrer Keyword-Liste erstellt. Die Zeichenfolge 'happy_hats_for_cats' wird auf '_for_' :

aufgeteilt %Vor%

Aber weil wir tatsächlich eine Reihe von Alternativen erzeugt haben (mit dem | Metazeichen), können Sie sich auf eines der Schlüsselwörter aufteilen:

%Vor%

Jedes Split-Ergebnis gibt Ihnen eine Liste von Strings (nur eine, wenn es nichts zu teilen gab); Mit itertools.chain.from_iterable() können wir alle diese Listen als eine lange iterierbare Ebene behandeln.

Demo:

%Vor%     
Martijn Pieters 22.12.2015 07:29
quelle
2

Eine andere Möglichkeit, dies zu tun, indem nur die eingebaute Methode verwendet wird, ist das Ersetzen aller Vorkommen von ['for', 'or', 'and'] in jeder Zeichenkette durch eine Ersetzungs-Zeichenkette, zum Beispiel _1_ (es könnte eine beliebige Zeichenkette sein) am Ende jeder Iteration, um diese Ersatzzeichenfolge zu teilen:

%Vor%

AUSGABE:

%Vor%     
Iron Fist 22.12.2015 18:48
quelle

Tags und Links