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?
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
Um sie zu einer einzigen Liste zusammenzufassen, können Sie
verwenden %Vor%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_'
:
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:
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% 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:
AUSGABE:
%Vor%