2011-10-19 10 views
7

Poszukuję biblioteki, która poprawnie kapitalizuje dany łańcuch, zakładając, że jest to tytuł. Wiem, że istnieje string.title(), ale wykorzystuje każdą pracę, a nie tylko tę, która powinna być pisana wielkimi literami. Ktoś zna jakieś biblioteki?Właściwa pisownia wielkimi literami w Pythonie

przykłady słów, które nie powinny być kapitalizowane w tytułach:

  • Propozycje (w, z, itd.)
  • Artykuły (a, an, the)
  • van
  • de
+5

Jak należy "prowadzić furgonetkę do domu"? –

+0

"Prowadzenie domu Van" – Raz

Odpowiedz

14

Termin dla Google to "tytuł tytułowy". first hit jest the titlecase package:

$ pip install titlecase 
... 
$ python 
... 
>>> from titlecase import titlecase 
>>> titlecase('the spam and eggs') 
'The Spam and Eggs' 
0

Jeśli chcesz capitolise ciąg ale tylko capitolise pewne słowa, trzeba określić, co w jakimś liście słowa nie chcesz capitolised a następnie zrobić coś podobnego do:

excluded_words = ["words","you","want","excluded"] 

titled = [word.capitalize() if word not in excluded_words else word 
      for word in title.split(" ")] 

Jest to możliwe tylko, jeśli masz jakiś dziwny (lub nie zaimplementowany) standard, którego chcesz użyć. Jeśli możesz znaleźć pakiet, który to robi i spełnia wymagane standardy, użyj go zamiast tego.

+1

zamiast tego użyj zestawu: 'excluded_words = {" words "," you "," want "," excluded "}'. Zestawy używają skrótów, które są bardzo wydajne. – sleblanc

Powiązane problemy