Gibt es in Python ein Standard - Weg , um eine Zeichenfolge Titlecase (dh Wörter beginnen mit Großbuchstaben, alle verbleibenden verrohrten Zeichen Klein haben) , aber verlassen Artikel wie and
, in
und of
klein geschrieben?
python
string
title-case
Yassin
quelle
quelle
re
notwendig? Es gibt eine"".split
Funktion, die dasselbe tut.str.split
Berücksichtigt keine zusammenhängenden Leerzeichen.re.split
behält Leerzeichen. Diese Funktion verbraucht also keine Leerzeichen."".split()
hat sie nicht berücksichtigt, aber"".split(" ")
getan.title_except('a whim of aN elephant', articles)
Fall nicht richtig . Sie können dieword.lower() in exceptions
Filterbedingung verwenden, um das Problem zu beheben.2001 a Space Odyssey
sollte zurückkehren2001 A Space Odyssey
, wo dasa
groß geschrieben wird, da es einer Zahl folgt. Danke im Voraus.Verwenden Sie das Modul titlecase.py ! Funktioniert nur für Englisch.
GitHub: https://github.com/ppannuto/python-titlecase
quelle
Es gibt folgende Methoden:
Es gibt keine Option für Kleinbuchstaben. Sie müssten das selbst codieren, wahrscheinlich mithilfe einer Liste von Artikeln, die Sie senken möchten.
quelle
Stuart Colville hat eine Python - Port hergestellt von einem Perl - Skript geschrieben von John Gruber zu konvertieren Strings in Titel Fall aber vermeidet Kapitalisierung kleine Worte basierend auf Regeln aus der New York Times Manual of Style, sowie Catering für mehrere Sonderfälle.
Einige der Klugheit dieser Skripte:
Sie schreiben kleine Wörter wie if, in, of, on usw. groß, werden jedoch nicht groß geschrieben, wenn sie in der Eingabe fälschlicherweise groß geschrieben werden.
In den Skripten wird davon ausgegangen, dass Wörter mit anderen Großbuchstaben als dem ersten Zeichen bereits korrekt großgeschrieben sind. Dies bedeutet, dass sie ein Wort wie "iTunes" in Ruhe lassen, anstatt es in "ITunes" oder, schlimmer noch, in "Itunes" zu zerlegen.
Sie überspringen alle Wörter mit Linienpunkten. "Example.com" und "del.icio.us" bleiben in Kleinbuchstaben.
Sie haben fest codierte Hacks, die speziell für ungewöhnliche Fälle wie „AT & T“ und „Q & A“ entwickelt wurden. Beide enthalten kleine Wörter (at und a), die normalerweise in Kleinbuchstaben geschrieben werden sollten.
Das erste und das letzte Wort des Titels werden immer groß geschrieben, sodass Eingaben wie „Nichts, vor dem man Angst haben muss“ in „Nichts, vor dem man Angst haben muss“ umgewandelt werden.
Ein kleines Wort nach einem Doppelpunkt wird großgeschrieben.
Sie können es hier herunterladen .
quelle
Das sollte reichen. Ich verstehe es anders.
Ok, wie in der obigen Antwort gesagt, müssen Sie eine benutzerdefinierte Großschreibung vornehmen:
mytext = u'i bin ein foobar bazbar '
Dies gibt aus
quelle
Die Titelmethode von Python 2.7 weist einen Fehler auf.
‚kehrt Carpenter S - Assistent wenn der Wert Carpenter‘ s - Assistent
Die beste Lösung ist wahrscheinlich die von @BioGeek mit dem Titel von Stuart Colville. Welches ist die gleiche Lösung von @Etienne vorgeschlagen.
quelle
Der Titel beginnt mit einem großgeschriebenen Wort und das passt nicht zum Artikel.
quelle
Einzeiler mit Listenverständnis und ternärem Operator
Nervenzusammenbruch:
for word in "Wow, a python one liner for titles".split(" ")
Teilt die Zeichenfolge in eine Liste auf und initiiert eine for-Schleife (im Listenverständnis)word.title() if word not in "the a on in of an" else word
verwendet die native Methode,title()
um die Zeichenfolge mit einem Groß- und Kleinschreibung zu versehen, wenn es sich nicht um einen Artikel handelt" ".join
verbindet die Listenelemente mit einem Trennzeichen von (Leerzeichen)quelle
Ein wichtiger Fall, der nicht berücksichtigt wird, sind Akronyme (die Python-Titlecase-Lösung kann Akronyme verarbeiten, wenn Sie sie ausdrücklich als Ausnahmen angeben). Ich ziehe es stattdessen vor, einfach ein Fallgehäuse zu vermeiden. Bei diesem Ansatz bleiben Akronyme, die bereits in Großbuchstaben geschrieben sind, in Großbuchstaben. Der folgende Code ist eine Modifikation des ursprünglich von Dheerosaurier bereitgestellten Codes.
Beim Ausführen wird Folgendes erzeugt:
quelle