Teilen Sie eine Zeichenfolge in Großbuchstaben
Was ist der pythonic way aufteilen einer Zeichenfolge vor dem auftreten einer bestimmten Gruppe von Zeichen?
Zum Beispiel möchte ich nach split
'TheLongAndWindingRoad'
bei jedem auftreten von einem Großbuchstaben (evtl. mit Ausnahme der ersten), und erhalten
['The', 'Long', 'And', 'Winding', 'Road']
.
Edit: Es sollte auch split single vorkommen, d.h.
von 'ABC'
möchte ich erhalten
['A', 'B', 'C']
.
InformationsquelleAutor der Frage Federico A. Ramponi | 2010-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider ist es nicht möglich, aufgeteilt auf eine null-Breite passen in Python. Aber Sie können
re.findall
statt:InformationsquelleAutor der Antwort Mark Byers
Hier ist eine alternative für die regex-Lösung. Das problem kann reprased wie "wie füge ich ein Leerzeichen vor jedem Großbuchstaben, vor dem split":
Dies hat den Vorteil der Erhaltung aller nicht-whitespace-Zeichen, die von den meisten anderen Lösungen nicht.
InformationsquelleAutor der Antwort Dave Kirby
Wenn Sie wollen
"It'sATest"
nach split["It's", 'A', 'Test']
ändern Sie die rexeg zu"[A-Z][a-z']*"
InformationsquelleAutor der Antwort John La Rooy
oder
InformationsquelleAutor der Antwort Gabe
Variation auf @ChristopheD 's Lösung
InformationsquelleAutor der Antwort pwdyson
Alternative Lösung (wenn Sie nicht mögen explizite regexes):
InformationsquelleAutor der Antwort ChristopheD
InformationsquelleAutor der Antwort user3726655
Anderen ohne regex und die Fähigkeit, zusammenhängende groß-wenn gewünscht
InformationsquelleAutor der Antwort Totoro
Einen alternativen Weg, ohne mit regex oder aufzählen:
Ich denke, es ist übersichtlicher und einfacher ohne Verkettung zu viele Methoden oder eine lange Liste Verständnis, dass es schwierig ist zu Lesen.
InformationsquelleAutor der Antwort Pie 'Oh' Pah
Einen alternativen Weg mit
enumerate
undisupper()
Code:
Ausgabe:
InformationsquelleAutor der Antwort The6thSense
Dies ist möglich mit der
more_itertools.split_before
tool.more_itertools
ist ein third-party-Paket mit 60+ nützliche tools, einschließlich Implementierungen für alle der ursprünglichen itertools Rezeptedie ausreicht, und Ihre manuelle Umsetzung.InformationsquelleAutor der Antwort pylang
Ersetzen Sie alle Großbuchstaben Buchstaben 'L' im gegeben mit einem leeren Raum, plus die Buchstaben "L".
Bei dem gegebenen Beispiel:
Können Sie auch ein
for
loop mitif
Aussage wieDank.
InformationsquelleAutor der Antwort Nde Samuel Mbah