Viac na
Ako písať veľké písmená na začiatku každého slova v reťazci?
s = 'the brown fox'
...urobte niečo tu...
s
by malo byť :
'The Brown Fox'
Aký'je najjednoduchší spôsob, ako to urobiť?
526
3
Metóda
.title()
reťazca (ASCII alebo Unicode je v poriadku) to robí:Pozor však na reťazce s vloženými apostrofmi, ako je uvedené v dokumentoch.
Pretože ma takéto veci bavia, tu sú ďalšie dve riešenia.
Rozdeľte sa na slová, každé slovo z rozdelených skupín parafujte a znovu spojte. Tým sa zmení biela medzera oddeľujúca slová na jednu bielu medzeru bez ohľadu na to, aká bola.
EDIT: Nepamätám si, čo som si myslel, keď som písal vyššie uvedený kód, ale nie je potrebné vytvárať explicitný zoznam; môžeme použiť generátorový výraz, ktorý to urobí lenivým spôsobom. Takže tu je lepšie riešenie:
Použite regulárny výraz na porovnanie začiatku reťazca alebo bielej medzery oddeľujúcej slová a jedného znaku, ktorý nie je biela medzera; použite zátvorky na označenie "match groups". Napíšte funkciu, ktorá prevezme objekt match a vráti skupinu match s bielym medzerníkom bez zmeny a skupinu match so znakom, ktorý nie je bielym medzerníkom, vo veľkých písmenách. Potom použite
re.sub()
na nahradenie vzorov. Toto riešenie nemá problémy s interpunkciou ako prvé riešenie, ani neopravuje biele miesta ako moje prvé riešenie. Toto riešenie poskytuje najlepší výsledok.Som rád, že som túto odpoveď preskúmal. Netušil som, že
re.sub()
môže prijať funkciu! Vo vnútri funkciere.sub()
môžete vykonať netriviálne spracovanie, aby ste získali konečný výsledok!Ak vám str.title() nefunguje, napíšte veľké písmená sami.
Jednoslovný výraz:
Jasný príklad: