13 - Procesar cadenas de caracteres

Algunos métodos y conceptos para el manejo de strings

Ya hemos 🔙 visto que podemos cargar una cadena de caracteres tanto por asignación (comillas dobles o simples), como por teclado. Podemos utilizar los operadores relacionales🔗 para identificar si dos cadenas son iguales, distintas o cual es la mayor alfabéticamente. 🔡

Como su nombre lo indica una cadena de caracteres está formada generalmente por varios caracteres (de todos modos podría tener solo un caracter o ser una cadena vacía) Podemos acceder en forma individual a cada caracter 🇪 del string mediante un subíndice:

nombre='jhon'
print(nombre[0])   #se imprime una j
if nombre[0]=="j": #verificamos si el primer caracter del string es una j
    print(nombre)
    print("comienza con la letra j")

Los subíndices comienzan a numerarse a partir del cero.

Si queremos conocer la longitud de un string en Python disponemos de una función llamada len que retorna la cantidad de caracteres que contiene.

nombre= 'jhon'
print(len(nombre))

El programa anterior imprime un 4 ya que la cadena nombre almacena 'jhon' que tiene cuatro caracteres.

Ejemplos

Ejemplo 1

Realizar la carga del nombre de una persona y luego mostrar el primer caracter del nombre y la cantidad de letras que lo componen.

name=input("Enter a name: ")
print(f"The first character of {name} is: {name[0]}")
print(f"The length of {name} is: {len(name)}")

Ejemplo 2

Solicitar la carga del nombre de una persona en minúsculas. Mostrar un mensaje si comienza con vocal dicho nombre.

#name
name=input("Enter a name: ")
if(name[0]=="a" or name[0]=="e" or name[0]=="i" or name[0]=="o" or name[0]=="u"):
    print(f"{name} begins with a vowel")
else:
    print(f"{name} does not begin with a vowel")

Basta con que una de las condiciones del if sea verdadera luego se ejecuta el bloque del verdadero.

Ejemplo 3

Ingresar un mail por teclado. Verificar si el string ingresado contiene solo un caracter "@".

mail=input("Ingrese un mail:")
cantidad=0
x=0
while x<len(mail):
    if mail[x]=="@":
        cantidad=cantidad+1
    x=x+1
if cantidad==1:
    print("Contiene solo un caracter @ el mail ingresado")
else:
    print("Incorrecto")

Para analizar cada caracter del string ingresado disponemos una estructura while utilizando un contador llamado x que comienza con el valor cero y se repetirá tantas veces como caracteres tenga la cadena (mediante la función len obtenemos la cantidad de caracteres).

while x < len (mail):

Dentro del ciclo while verificamos cada caracter mediante un if y contamos la cantidad de caracterers "@":

if(mail[i]=="@"):

counterArroba+=1

Cuando sale del ciclo while procedemos a verificar si el contador tiene almacenado el valor 1 y mostramos el mensaje respectivo:

if(counterArroba==1):

print("The email has one @")

name="Jhon"
name[0]="m" #esto esta permitido
Error al querer modificar una parte de un string

No hay que confundir 😵 cambiar parte del string con realizar la asignación de otro string a la misma variable, luego si es correcto asignar otro valor a un string:

name="Jhon"
name = "jhon" #esto si esta permitido

Métodos propios de las cadenas de caracteres

Los string tienen una serie de métodos (funciones aplicables solo a los string) que nos facilitan 🙂 la creación de nuestros programas.

Los primeros tres métodos que veremos se llaman: lower, upper y capitalize. 🌌

  • upper() : devuelve una cadena de caracteres convertida todos sus caracteres a mayúsculas.

  • lower() : devuelve una cadena de caracteres convertida todos sus caracteres a minúsculas.

  • capitalize() : devuelve una cadena de caracteres convertida a mayúscula solo su primer caracter y todos los demás a minúsculas.

Ejemplo 4

Inicializar un string con la cadena "mAriA" luego llamar a sus métodos upper(), lower() y capitalize(), guardar los datos retornados en otros string y mostrarlos por pantalla.

text1="mAriA"
#upper case
print(text1)
text2=text1.upper()
print(f"Upper case: {text2}")
#lower case
text2=text1.lower()
print("Lower case: ",text2)
text2=text1.capitalize()
print("Capitalizae case: ",text2)
Ejecución ejemplo 4

Para llamar a un método del string debemos disponer entre el nombre del string y el método el caracter punto.

text2 = text1.upper()

Problemas propuestos 📚

Ha llegado una parte fundamental 😀 , que es el momento donde uno desarrolla individualmente un algoritmo ✍🏾 para la resolución de problemas. El tiempo a dedicar a esta sección ejercicios propuestos 👩🏾‍💻 debe ser mucho mayor que el empleado a la sección de ejercicios resueltos. La experiencia dice que debemos dedicar el 80% del tiempo 🕖 a la resolución individual de problemas y el otro 20% al análisis y codificación de problemas ya resueltos 🗃️ por otras personas.

Problema 1

Cargar una oración por teclado. Mostrar luego cuantos espacios en blanco se ingresaron.

Tener en cuenta que un espacio en blanco es igual a " ", en cambio una cadena vacía es ""

Problem 2

Ingresar una oración que pueden tener letras tanto en mayúsculas como minúsculas. Contar la cantidad de vocales.

Problem 3

Solicitar el ingreso de una clave 🗝️ por teclado y almacenarla en una cadena de caracteres 🙈 . Controlar que el string ingresado tenga entre 10 y 20 caracteres para que sea válido, en caso contrario mostrar un mensaje de error.

Solución 🆘

Nota : 👩‍🏫 Inténtalo tu mism@, esta es la mejor forma de aprender 📈 o si quieres ver 👀 otro algoritmo para solucionar el mismo problema. 👨‍💻

#count blank Space
countBlank=0
text=input("Enter text: ")
for f in range(len(text)):
    if(text[f]==" "):
        countBlank+=1
print("The blanck space: ",countBlank)

Última actualización

¿Te fue útil?