¿Cómo puedo poner en mayúscula la primera letra de cada palabra en una cadena?

Resuelto TIMEX asked hace 15 años • 24 respuestas
s = 'the brown fox'

...haz algo aquí...

sdebiera ser:

'The Brown Fox'

¿Cuál es la forma más sencilla de hacer esto?

TIMEX avatar Oct 11 '09 09:10 TIMEX
Aceptado

El .title()método de una cadena (ya sea ASCII o Unicode está bien) hace esto:

>>> "hello world".title()
'Hello World'
>>> u"hello world".title()
u'Hello World'

Sin embargo, busque cadenas con apóstrofes incrustados, como se indica en los documentos.

El algoritmo utiliza una definición simple e independiente del idioma de una palabra como grupos de letras consecutivas. La definición funciona en muchos contextos, pero significa que los apóstrofes en las contracciones y los posesivos forman límites de palabras, lo que puede no ser el resultado deseado:

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"
Mark Rushakoff avatar Oct 11 '2009 02:10 Mark Rushakoff

El .title()método no puede funcionar bien,

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"

Método de prueba string.capwords(),

import string
string.capwords("they're bill's friends from the UK")
>>>"They're Bill's Friends From The Uk"

De la documentación de Python sobre palabras clave :

Divida el argumento en palabras usando str.split(), escriba en mayúscula cada palabra usando str.capitalize() y una las palabras en mayúscula usando str.join(). Si el segundo argumento opcional sep está ausente o es Ninguno, las series de caracteres de espacios en blanco se reemplazan por un solo espacio y los espacios en blanco iniciales y finales se eliminan; de lo contrario, se usa sep para dividir y unir las palabras.

Chen Houwu avatar Sep 09 '2012 06:09 Chen Houwu