Una variable de cadena de caracteres forma parte del objeto string. Una cadena puede contener un caracter, un párrafo, una página o un libro de mas 100 páginas.
Siendo así, es lógico que su manipulación tenga que hacerse mediante funciones que consituyen los métodos de dichos objetos. El Word o cualquier otro procesador de texto hace uso extensivo de los métodos que poseen los objetos de tipo string
A continuación haremos uso de estos métodos y luego veremos algunas aplicaciones.
Ejemplos
>>>cad = "Hola "
>>>cad1 ="COmo se viene la tarde, Tan Callando..."
>>>cad2 = "nuestras vidas son los ríos"
>>>cad1 ="COmo se viene la tarde, Tan Callando..." >>>cad3 ="'Nuestras vidas son los ríos que van a dar al mar, que es el morir; allí van los señoríos derechos a se acabar e consumir; allí los ríos caudales, allí los otros medianos e más chicos; i llegados, son iguales los que viven por sus manos e los ricos.'"
>>>cad4 = "Ilmer\nBáslavi\nYácole\nYrma\nMary\nElizabeth"
Veamos algunas funciones de cadena
La longitud o número de caracteres
>>>len(cad3)
Parte de una cadena
>>>cad[:4]
>>>cad1[16:]
Convertir la primera letra de una cadena en mayúscula
>>>cad1.capitalize()
Convirtiendo toda la cadena a minúscula
>>>cad1.casefold()
>>>cad.lower() Centrando la cadena en una longitud de espacio mayor
>>> cad1.center(50,'-')
Contando el número de veces que se repite una subcadena
>>>cad1.count("a")
¿Cuántas palabras hay en cad1?
>>>cad1.count(" ")
Hay 6 palabras. ¿Y en cad3?
>>>cad3.count(" ")
¿Cuál es el índice donde empieza la cadena "an" en cad1?
>>>cad1.index("an")
Es lo mismo que usar
>>>cad1.find("an")
>>>cad1
¿Cómo podemos saber la posición de inicio de la segunda subcadena "na"?
>>>cad1.index("an",cad1.index("an")+1)
¿Podemos extraer la primera palabra de cad1?
>>>cad1[:cad1.index(" ")]
¿Y la segunda palabra?
>>>cad1[cad1.index(" ")+1:cad1.index(" ",cad1.index(" ")+1)]
Es lo mismo si se usa
>>>cad1[cad1.find(" ")+1:cad1.find(" ",cad1.find(" ")+1)]
También podemos preguntar si una cadena que contiene números es número
>>>c="2021"
>>>c.isalnum()
Otro no tan sencillo
>>>cad[cad.index("2"):].isalnum()
Contrario al anterior
>>>n = "128"
>>>n.isalpha()
Pasar todo el texto a minúscula
>>>cad1.lower()
Separando a una cadena por alguna subcadena o caracter
>>>cad1.partition(",")
Aunque genera un elemento ",". Hubiéramos querido que separa en dos cadenas
Para reemplazar una subcadena de una cadena por otra subcadena
>>>cad1.replace("tarde","mañana")
>>>cad1.replace("tarde","TARDE")
Separar una cadena por alguna subcadena ocaracter
>>>cad1.split(",")
Separar por un caracter especial
Veamos el caso de cad4. Si lo imprimimos, cada elemento se imprimirá en una línea, pues "\n" es el cambio de línea y retorno de carro
>>>print(cad4)
Para separar sus elementos, podemos usar
>>>cad4.split("\n")
O también
>>>cad4.splitlines()
Finalmente, si deseamos que toda la cadena esté en mayúscula
>>>cad3.upper()
Vamos a desarrollar dos ejemplos de aplicación:
El primero se encargará de manipular arreglos de nombres, de meses, fechas, etc.
El segundo, presentará una alternativa de ingreso de datos para dos o más variables en la misma sentencia input.
Dada las siguientes cadenas de nomre de meses y dias de la semana, endiferentes forma de cadena, vamos a manipularlas a nuestra conveniencia
# Los meses como cadena
mesA = ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Setiembre","Octubre","Noviembre","Diciembre"]
mesB = "Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Setiembre,Octubre,Noviembre,Diciembre"
mesC = "Enero Febrero Marzo Abril Mayo Junio Julio Agosto SetiembreOctubre NoviembreDiciembre"
montA= ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
# Los dias de semana como cadena
diaSemA = ["Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo"]
diaSemB = "Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo"
diaSemC = "Lunes Martes MiercolesJueves Viernes Sabado Domingo "
daySemA = ["Mon","Twe","Wed","Thu","Fri","Sat","Sun"]
Vamos a crear un diccionario de meses y semana
for i in range(12):
mes[i] = mesA[i]
for i in range(12):
mes[i] = mesA[i]
print("Mes",i,mes[i])
Vamos a usar la cadena mesB para indicar el número de días que tiene. Para ello vamos a crear una lista de nro. de días por mes
mes = mesB.split(",")
diasMes = "31,28,31,30,31,30,31,31,30,31,30,31"
Procedemos a la impresión
for i in range(1,len(mes)+1):
print("El mes de ",mes[i-1], "tiene",diasMes[3*(i-1):3*(i-1)+2],"días")
Ahora usaremos la cadena mesC. Observe que esta cadena tiene 9 caracteres por cada mes. En aquellos que tienen menos de 9, se rellena con espacios en blanco. Esto nos ayudará en la extracción de los meses. Cada mes empieza en el 9*(i-1) caracteres; desde allí, debemos extraer los siguientes 9; es decir, desde 9*(i-1) hasta 9*(i-1)+9; es decir, hasta 9*i. Aquí el código
for i in range(1,13): print("El mes",mesC[9*(i-1):9*i]," tiene",diasMes[3*(i-1):3*(i-1)+2],"días")
En este ejemplo seguiremos con cadenas y añadiremos fechas y horas.
La fecha y el tiempo en Python es un módulo mediante el cual accesamos a la fecha y el tiempo actual. El formato está definido como un número de punto flotante que incluye toda la información relativa a: Año, Mes, Día, Hora, Minuto, Segundoy Milisegundos. Todo ello viene empaquetado y se obtiene usando time.time(), después de cargar a memoria la librería time.
>>>import time
Ahora ya disponemos de las funciones incluídas en la librería.
>>>time.time()
Genera un resultado similar a esto: 1562543172.1941803<br>
Es el número de segundos (en punto flotante) transcurridos desde las 0 horas del 1 de Enero de 1970; año inicial del manejo de fechas por Python.
Una de las funciones empleadas para desempaquetar esta estructura es ctime
>>> t = time.time()
>>>fecha = time.ctime(t)
>>>fecha
'Wed Jul 17 14:51:28 2019'
Vamos a sumarle a t, el número de segundos de un día; es decir,
>>>td =60*60*24
>>>t1 = t+td
Aumentemos 10 días más
>>>t10 = t+td*10
>>>fecha = time.ctime(t1)
>>>fecha
>>>fecha = time.time(t10)
>>>fecha
Vamos a usar la librería calendar
>>>import calendar
Para imprimir el calendario de un año particular:
>>>print(calendar.calendar(2019))
Otra forma:
>>>x = int(input("Quieres saber el dia que naciste?. Digita el año: "))
>>>print(calendar.calendar(x))
Continuar en la siguiente sesión