Mostramos algunos ejemplos de uso de funciones auxiliares para el tratamiento de cadenas de texto (string) en el lenguaje de programación Python. Explicamos el uso de capitalize(), lower(), upper(), title(), swapcase(), count(), len, startswith(), endswith(), find(), format() y el literal f.
- Requisitos para el desarrollo de programas en Python.
- Función capitalize() en Python.
- Funciones lower, upper, title, swapcase en Python.
- Función count() para contar el número de veces que una subcadena aparece en una cadena en Python.
- Función len() para obtener el tamaño de una cadena en Python.
- Funciones startswith() y endswith() para buscar texto de inicio o fin en una cadena en Python.
- Método find() para buscar la posición de una subcadena en una cadena en Python.
- La función format() un poco más a fondo en Python.
- Uso de f para formatear cadenas de texto en Python.
Requisitos para el desarrollo de programas en Python
En el siguiente artículo explicamos detalladamente cómo instalar Python y el IDE Visual Studio Code que será el que usemos en este artículo para realizar programas Python y compilar y probar el resultado:
Función capitalize() en Python
La función capitalize() garantiza que el primer carácter de una cadena esté en mayúscula. Solo se escribe en mayúscula la primera letra de la cadena. Si la cadena contiene varias palabras separadas por caracteres vacíos, solo se escribe en mayúscula el primer carácter.
Esta función puede ser usada (llamada) de varias formas. A continuación mostramos tres ejemplos de su uso, la explicación y el resultado.
1 2 |
mensaje1 = str.capitalize('esto es una PRUEBA de capitalize') print(mensaje1) |
El resultado será:
Esto es una prueba de capitalize
En el primer caso llamamos a capitalize() como miembro de la clase str. En otras palabras, tenemos acceso al método auxiliar str mediante el operador de acceso a miembros, un símbolo de punto (.), en el nombre del propio tipo de datos. Posteriormente, llamamos al nombre de la función y pasamos nuestra cadena literal como argumento.
1 2 |
mensaje2 = 'otra Prueba de capitalize'.capitalize() print(mensaje2) |
El resultado será:
Otra prueba de capitalize
En el segundo caso llamamos a la función capitalize() como miembro de la cadena literal. Es decir, tenemos acceso al método auxiliar str mediante el operador de acceso a miembros en el propio valor de la cadena literal. Cuando hacemos esto, no es necesario pasar nada como argumento. La función opera en la propia cadena literal.
1 2 |
mensaje3 = 'Tercera y Última prueba de capitalize' print(mensaje3.capitalize()) |
El resultado será:
Tercera y última prueba de capitalize
El el tercer ejemplo llamamos a la función capitalize() como miembro de una variable. Al igual que en el ejemplo anterior, tenemos acceso al método auxiliar str mediante el operador de acceso a miembros en la variable que apunta a una cadena literal. De nuevo, no es necesario pasar nada como argumento porque la función opera en la cadena a la que apunta la variable.
Funciones lower, upper, title, swapcase en Python
Python incluye más funciones para cambio de mayúsculas a minúsculas:
- lower(): convierte toda la cadena a minúsculas.
- upper(): convierte toda la cadena a mayúsculas.
- title(): convierte la primera letra de cada palabra a mayúsculas.
- swapcase(): invierte las mayúsculas a minúsculas y viceversa.
A continuación mostramos un ejemplo de uso y el resultado de las funciones anteriores en Python:
1 2 3 4 5 6 7 8 |
#lower, upper, title, swapcase texto = input("Introduzca un texto: ") print("Aplicando lower() al texto: ",texto.lower()) print("Aplicando upper() al texto: ",texto.upper()) print("Aplicando title() al texto: ",texto.title()) print("Aplicando swapcase() al texto: ",texto.swapcase()) |
El resultado del código anterior en Python:
Introduzca un texto: esto eS una prueBa de TEXTO en Python
Aplicando lower() al texto: esto es una prueba de texto en python
Aplicando upper() al texto: ESTO ES UNA PRUEBA DE TEXTO EN PYTHON
Aplicando title() al texto: Esto Es Una Prueba De Texto En Python
Aplicando swapcase() al texto: ESTO Es UNA PRUEbA DE texto EN pYTHON
Función count() para contar el número de veces que una subcadena aparece en una cadena en Python
A continuación unos ejemplos Python de la función count() que cuenta el número de veces que aparece un texto dentro de otro texto:
1 2 3 4 5 6 7 8 9 10 11 |
#Contar apariciones de subcadena en cadena texto = input("Introduzca la frase: ") palabra = input("Introduzca la letra o palabra para obtener el nº de veces que aparece: ") numVecesAparicion = texto.count(palabra) if numVecesAparicion > 1: print('La palabra/letra "{}" aparece {} veces'.format(palabra, numVecesAparicion)) elif numVecesAparicion == 1: print('La palabra/letra "{}" aparece {} vez'.format(palabra, numVecesAparicion)) else: print('La palabra/letra "{}" no aparece en el texto'.format(palabra)) |
Función len() para obtener el tamaño de una cadena en Python
Un ejemplo de uso de la función len() en Python, que obtiene el número de caracteres de una cadena (tamaño):
1 2 3 4 5 6 7 8 9 10 |
#Tamaño de una cadena texto = input("Introduzca una frase: ") tamaño = len(texto) if tamaño > 1: print("La frase tiene {} caracteres".format(tamaño)) elif tamaño == 1: print("La frase tiene {} carácter".format(tamaño)) else: print("No ha introducido una frase") |
El resultado del ejemplo:
Funciones startswith() y endswith() para buscar texto de inicio o fin en una cadena en Python
Las funciones startswith() y endswith() sirven para inspeccionar el contenido de una cadena de cara a averiguar si coincide con lo que esperaba que comenzara o finalizara, respectivamente. La función startswitch() devolverá true si el principio de la cadena de texto coincide con la subcadena pasada como parámetro. En el caso de endswith() es igual pero para el final del texto.
Veamos un ejemplo de ambas funciones y el resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#startswith() endswith() texto = input("Introduzca un texto: ") empiezaPor = input("Introduzca una letra/palabra o frase que estaría en el inicio: ") acabaPor = input("Introduzca una letra/palabra o frase que estaría en el final: ") #Comprobamos si el texto empieza por el texto introducido if texto.startswith(empiezaPor): print("El texto introducido empieza por ", empiezaPor) else: print("El texto introducido no empieza por ", empiezaPor) #Comprobamos si el texto acaba por el texto introducido if texto.endswith(acabaPor): print("El texto introducido acaba por ", acabaPor) else: print("El texto introducido no acaba por ", acabaPor) |
El resultado de la ejecución del ejemplo, donde puede verse que, como es lógico, estas funciones distinguen mayúsculas de minúsculas. No será igual la letra «n» que la letra «N», por ejemplo.
Método find() para buscar la posición de una subcadena en una cadena en Python
El método find() busca la posición de base cero de una cadena dentro de otra. Empezando por 0, el método indica dónde se encuentra la cadena de búsqueda. Si no encuentra la cadena, devuelve -1.
A continuación mostramos un ejemplo del uso del método find() en Python. En este caso leeremos un fichero de texto en el equipo (que solicitaremos al usuario), previamente comprobaremos si el fichero existe en la ubicación especificada. En caso de no existir el programa se cerrará con código de salida 1. Si existe pedirá un texto al usuario. El programa buscara dicho texto en el fichero. Si existe el texto lo indicará, mostrará la posición donde lo ha encontrado y cerrará la aplicación con código de salida 3. En caso de no existir el texto en el fichero lo indicará y cerrará el programa con código de salida 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#Buscar texto en fichero con Python import os.path #Para este ejemplo vamos a pedir al usuario que introduzca #la ruta y el nombre de un fichero de texto #Y pedirá también que introduzca una letra, palabra o frase #El programa mostrará si existe ese texto en el fichero ficheroRuta = input("Introduzca la ruta y el nombre de un fichero de texto: ") #Comprobamos si existe el fichero if os.path.isfile(ficheroRuta): textoBuscar = input("Introduzca el texto a buscar en el fichero: ") #Leemos el fichero y lo almacenamos en una variable fichero = open(ficheroRuta) contenidoFichero = fichero.read() #Buscamos el texto en el fichero posicionEncontrado = contenidoFichero.find(textoBuscar) if posicionEncontrado >= 0: print("Se ha encontrado el texto en el fichero, en la posición ", posicionEncontrado) exit(3) #Cerramos aplicación con código de salida 3 else: print("No se ha encontrado el texto en el fichero") exit(2) #Cerramos aplicación con código de salida 2 #Cerramos el fichero fichero.close() else: #En caso de no existir salimos del programa con código de salida 1 print("No se ha encontrado el fichero") exit(1) |
Como vemos, el caso anterior sirve también como ejemplo de lectura de ficheros en Python. También usamos el paquete os.path para averiguar si existe un fichero en disco.
El resultado del ejemplo anterior:
Funciones lstrip(), rstrip(), strip() para eliminar caracteres vacíos en el principio y el fin de una cadena en Python
Python proporciona las funciones lstrip(), rstrip() y strip() para quitar caracteres de espacio vacío en cadenas:
- lstrip() para quitar los caracteres de espacio vacío del lado izquierdo de una cadena.
- rstrip() para quitar los caracteres de espacio vacío del lado derecho de una cadena.
- strip() para quitar los caracteres de espacio vacío del lado derecho y el izquierdo de una cadena.
Un ejemplo de uso de estas funciones en Python:
1 2 3 4 5 6 7 |
#Ejemplos trim en Python texto = " Esto es una prueba de espacios en blanco " print("Aplicando \"lstrip\" a texto: ---{}---".format(texto.lstrip())) print("Aplicando \"rstrip\" a texto: ---{}---".format(texto.rstrip())) print("Aplicando \"strip\" a texto: ---{}---".format(texto.strip())) |
El resultado será:
1 2 3 |
Aplicando "lstrip" a texto: ---Esto es una prueba de espacios en blanco --- Aplicando "rstrip" a texto: --- Esto es una prueba de espacios en blanco--- Aplicando "strip" a texto: ---Esto es una prueba de espacios en blanco--- |
Función replace() para reemplazar un texto dentro de otro texto en Python
A continuación os mostramos un ejemplo de uso de la función replace() en Python, que permite reemplazar un texto dado dentro de una cadena por el texto de búsqueda. En el ejemplo, se solicita al usuario una frase, un texto de búsqueda y el texto por el que se reemplazará si existe. El programa buscará el texto en la frase, si aparece, lo reemplazará por el texto dado por el usuario:
1 2 3 4 5 6 7 8 9 10 |
#Reemplazar texto en cadena frase = input("Introduzca una frase: ") textoBusqueda = input("Introduzca la letra/palabra a buscar: ") textoReemplazo = input("Introduzca la letra/palabra a reemplazar: ") print("La frase original es: ", frase) numReemplazos = print("La frase con palabras reemplazadas es: ", frase.replace(textoBusqueda, textoReemplazo)) |
El resultado de la ejecución del programa será:
La función format() un poco más a fondo en Python
La función auxiliar format() combina valores en una plantilla de cadena literal, sin necesidad de una concatenación de cadenas desordenada. También puede dar formato a los valores combinados para su visualización adecuada, como en el caso de números, fechas y horas.
En la versión 3.6 de Python, los desarrolladores simplificaron el método format() en un prefijo de cadena, la letra f. Esto realiza prácticamente la misma funcionalidad, con menos escritura.
Varios ejemplos de uso de la función format() en Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#Ejemplos de uso de format() en Python medicamento = 'Aspirina' dosis = 5.4 duracionMeses = 4 instruccionesUso = '{} - tome {} ml por hora \ durante {} meses'.format(medicamento, dosis, duracionMeses) print(instruccionesUso) instruccionesUso = '{2} - tome {1} ml por hora \ durante {0} meses'.format(duracionMeses, dosis, medicamento) print(instruccionesUso) instruccionesUso = '{medicamento} - tome {dosis} ml por hora \ durante {duracionMeses} meses'.format(medicamento = "Diacepán", dosis = 4, duracionMeses = 3) print(instruccionesUso) |
El resultado de la ejecución del ejemplo anterior:
Aspirina – tome 5.4 ml por hora durante 4 meses
Aspirina – tome 5.4 ml por hora durante 4 meses
Diacepán – tome 4 ml por hora durante 3 meses
En el ejemplo anterior, se define una cadena de formato que contiene una serie de campos de reemplazo, tal como se define en un conjunto de llaves {}.
En el primer ejemplo, los campos de reemplazo no contienen valores. Mediante el operador de acceso a miembros, se llama a la función format(). Se pasan los valores que se quieren sustituir en cada campo de reemplazo, en el orden en que aparecen.
En el segundo ejemplo, se rellenan los campos de reemplazo con un valor numérico de base cero, que tiene acceso al argumento pasado a la función format(). Por lo que se puede cambiar el orden de los argumentos para mostrar el mismo texto.
En el tercer ejemplo, se rellenan los campos de reemplazo con nombres de variable. Esos mismos nombres de variable se pasan como argumentos con nombre en la función format().
Uso de f para formatear cadenas de texto en Python
El literal f funciona más o menos como la función format(), aunque ahora escritura. A continuación mostramos unos ejemplos de su uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#Ejemplos de uso de format() en Python medicamento = 'Aspirina' dosis = 5.4 duracionMeses = 4 instruccionesUso = '{} - tome {} ml por hora durante {} meses'.format(medicamento, dosis, duracionMeses) print(instruccionesUso) instruccionesUso = '{2} - tome {1} ml por hora durante {0} meses'.format(duracionMeses, dosis, medicamento) print(instruccionesUso) instruccionesUso = '{medicamento} - tome {dosis} ml por hora durante {duracionMeses} meses'.format(medicamento = "Diacepán", dosis = 4, duracionMeses = 3) print(instruccionesUso) #Uso de f en Python texto = 'Mundo' mensaje = f'Hola, {texto}.' print(mensaje) número = 10 valor = 3.14 resultado = número*valor mensaje = f'{número} x {valor} = {resultado}.' print(mensaje) ancho = 5 alto = 10 print(f'El perímetro es {(2 * ancho) + (2 * alto)} y el área es {ancho * alto}.') #Ejemplo de formateo de número con format_string y f numero = 256633.586 print(f"El número {numero} en formato separador de miles y dos decimales es {numero:,.2f}") #En el caso anterior el número aparecerá como 256,633.59 #Si queremos formatearlo al estilo castellano, con puntos como separadores de miles y comas de decimales #Podemos o bien reemplazar el puto por coma y viceversa mensaje = f"El número {numero} en formato separador de miles y dos decimales es {numero:,.2f}" print(mensaje.replace(",",".")) #O bien, algo más eficiente, podemos usar locale import locale locale.setlocale(locale.LC_ALL, '') print(locale.format_string('%.2f', numero, grouping=True, monetary=True)) |
El resultado de la ejecución del ejemplo anterior:
Hola, Mundo.
10 x 3.14 = 31.400000000000002.
El perímetro es 30 y el área es 50.
El número 256633.586 en formato separador de miles y dos decimales es 256,633.59
El número 256633.586 en formato separador de miles y dos decimales es 256.633.59
256.633,59
Tanto f, como format() incluyen infinidad de opciones para formato de todo tipo de cadenas y datos: fechas, horas, días, números, cadenas de texto, etc..