Wie wird der erste Buchstabe jedes Wortes in einer Zeichenkette großgeschrieben?
s = 'the brown fox'
...hier etwas tun...
s
sollte sein :
'The Brown Fox'
Wie kann man das am einfachsten machen?
526
3
Die Methode
.title()
einer Zeichenkette (entweder ASCII oder Unicode ist in Ordnung) tut dies:Achten Sie jedoch auf Strings mit eingebetteten Apostrophen, wie in der Dokumentation beschrieben.
Der Algorithmus verwendet eine einfache, sprachunabhängige Definition eines Wortes als Gruppe von aufeinanderfolgenden Buchstaben. Diese Definition funktioniert in vielen Kontexten, aber sie bedeutet, dass Apostrophe in Zusammenziehungen und Possessiven Wortgrenzen bilden, was nicht unbedingt das gewünschte Ergebnis ist:
"sie'sind Bill's Freunde aus dem Vereinigten Königreich".title()
Und weil mir so etwas Spaß macht, hier noch zwei weitere Lösungen.
In Wörter aufteilen, jedes Wort aus den getrennten Gruppen mit den Initialen versehen und wieder zusammenfügen. Dadurch wird der Leerraum zwischen den Wörtern in einen einzigen Leerraum umgewandelt, unabhängig davon, was er war.
EDIT: Ich weiß nicht mehr, was ich dachte, als ich den obigen Code geschrieben habe, aber es ist nicht nötig, eine explizite Liste zu erstellen; wir können einen Generatorausdruck verwenden, um dies auf faule Weise zu tun. Hier ist also eine bessere Lösung:
Verwenden Sie einen regulären Ausdruck, um den Anfang der Zeichenkette oder das Leerzeichen zwischen den Wörtern sowie ein einzelnes Zeichen ohne Leerzeichen abzugleichen; verwenden Sie Klammern, um "Übereinstimmungsgruppen" zu markieren. Schreiben Sie eine Funktion, die ein Match-Objekt entgegennimmt und die Übereinstimmungsgruppe mit Leerzeichen unverändert und die Übereinstimmungsgruppe mit Nicht-Leerzeichen in Großbuchstaben zurückgibt. Verwenden Sie dann
re.sub()
, um die Muster zu ersetzen. Bei dieser Lösung gibt es weder die Interpunktionsprobleme der ersten Lösung, noch wird das Leerzeichen wiederhergestellt wie bei meiner ersten Lösung. Diese Lösung liefert das beste Ergebnis.Ich bin froh, dass ich diese Antwort recherchiert habe. Ich hatte keine Ahnung, dass
re.sub()
eine Funktion annehmen kann! Man kann innerhalb vonre.sub()
eine nicht-triviale Verarbeitung durchführen, um das Endergebnis zu erhalten!Wenn str.title() bei Ihnen nicht funktioniert, können Sie die Großschreibung selbst vornehmen.
Einzeiler:
Klares Beispiel: