HOWTO · Python
Poner en mayúscula la primera letra de cada palabra en Python
Este tutorial demuestra cómo poner en mayúscula la primera letra de cada palabra en una cadena en Python
En esta página
Para poner en mayúscula las palabras de una cadena de Python, usa str.title() para aplicar rápidamente el estilo de título, string.capwords() para dividir por espacios en blanco y volver a unir con espacios simples, o str.split() junto con str.join() si necesitas tratar de forma personalizada las comillas u otros prefijos. Elige según necesites un tratamiento especial para la puntuación o los espacios originales: las funciones integradas de capitalización pueden poner en mayúscula las letras que siguen a los apóstrofos, mientras que dividir y volver a unir normaliza los espacios en blanco.
Poner en mayúscula las palabras con str.title()
Llama a str.title() sobre la cadena. Devuelve una cadena nueva, deja intacta la original y conserva los espacios en blanco de la entrada. Ejecuta este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
text = "python string methods"
print(text.title())
El resultado visible muestra las palabras capitalizadas; la etiqueta del resultado se mantiene en inglés.
Python String Methods
str.title() trata una letra que aparece después de un carácter que no es una letra como el inicio de una palabra nueva. Por eso la puntuación afecta a la capitalización: por ejemplo, el apóstrofo de what's hace que la s se interprete como el inicio de otra palabra, de modo que la capitalización de título puede producir What'S. Este comportamiento resulta útil para aplicar el estilo de un título, pero puede no coincidir con la capitalización habitual de las contracciones o los posesivos en inglés. También pone en mayúscula las letras que siguen a signos de puntuación, como un signo de exclamación. El método conserva los espacios repetidos porque cambia las mayúsculas y minúsculas de los caracteres sin dividir la cadena.
Poner en mayúscula las palabras con string.capwords()
string.capwords() es una función del módulo string de Python, no un método de cadena. Con su valor predeterminado, sep=None, divide el texto en secuencias de espacios en blanco, aplica str.capitalize() a cada palabra resultante y las une con un solo espacio. Importa el módulo y llama a la función:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import string
text = "python string methods"
print(string.capwords(text))
El resultado visible muestra las palabras capitalizadas; la etiqueta del resultado se mantiene en inglés.
Python String Methods
Esta función es práctica cuando está bien reducir los espacios en blanco. Elimina los espacios iniciales y finales, y convierte en espacios simples los tabuladores y saltos de línea usados como separadores. Si indicas un separador, la función divide y vuelve a unir usando exactamente ese separador; no conserva cualquier espaciado alrededor de las palabras. Con el comportamiento predeterminado, una palabra entre comillas conserva las comillas, pero su primer carácter sigue siendo la comilla, por lo que la letra interior no se pone en mayúscula. Por lo general, no conviene pasar un apóstrofo como separador: separa las contracciones y puede poner en mayúscula la letra que viene después. Usa esta función cuando la normalización sencilla de espacios y su comportamiento con la puntuación sean adecuados para el texto.
Poner en mayúscula las palabras con str.split() y str.join()
Para personalizar el comportamiento, usa str.split() para obtener las palabras, transforma cada una y llama a str.join() sobre el separador para construir el resultado. Son métodos de cadena: str.split() es el nombre a nivel de tipo de text.split(), y str.join() describe llamadas como " ".join(words). La siguiente función auxiliar omite las comillas iniciales y un paréntesis de apertura antes de poner en mayúscula la primera letra; deja intacto el resto de cada palabra:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
def capitalize_word(word):
prefix = ""
while word and word[0] in "'\"(":
prefix += word[0]
word = word[1:]
if not word:
return prefix
return prefix + word[0].upper() + word[1:]
text = "'hello' what's up?"
words = text.split()
result = " ".join(capitalize_word(word) for word in words)
print(result)
El resultado visible muestra cómo la función auxiliar trata las comillas y las palabras; la etiqueta del resultado se mantiene en inglés.
'Hello' What's Up?
Este método convierte 'hello' en 'Hello' y mantiene en minúscula la s de what's, porque solo cambia la primera letra de cada palabra delimitada por espacios en blanco. Amplía la regla de prefijos si tus datos usan otros caracteres iniciales, como corchetes. Sin un argumento separador, str.split() trata los espacios en blanco consecutivos como un único delimitador y elimina los espacios iniciales y finales; por tanto, al unir con un solo espacio se reducen los espacios repetidos y los saltos de línea. Es una buena opción cuando conviene normalizar el texto, pero no si es necesario conservar exactamente el espaciado original. Si la capitalización debe seguir reglas específicas de un idioma, define explícitamente el comportamiento deseado en lugar de suponer que estos métodos de propósito general gestionan los límites entre palabras de todos los idiomas.