18. Métodos de Listas y Strings: Manipulando Datos Históricos#
“El lenguaje es el instrumento más importante de la cooperación humana. Es el medio por el cual transmitimos información sobre el mundo, pero, más importante aún, nos permite transmitir información sobre cosas que no existen en absoluto.”
—Yuval Noah Harari, De animales a dioses (2014)
18.1. 🎯 Objetivos de Aprendizaje#
Al finalizar este capítulo, serás capaz de:
Usar métodos para manipular listas (agregar, eliminar, ordenar)
Aplicar métodos de strings para procesar textos históricos
Formatear salidas de texto de manera profesional
Combinar técnicas para análisis básico de datos
⏱️ Tiempo estimado
90 minutos de lectura y práctica
18.2. ¿Qué son los Métodos?#
Los métodos son funciones especiales que “pertenecen” a un tipo de dato. Se llaman usando la notación de punto:
objeto.metodo()
🏛️ Analogía Histórica
Imagina que los métodos son como las herramientas de un archivero: tiene herramientas específicas para ordenar documentos, buscar información, clasificar por fecha, etc. Cada herramienta hace una tarea específica.
18.3. Métodos de Listas#
Las listas tienen métodos poderosos para manipular colecciones de datos. Veamos los más importantes:
18.3.1. append() - Agregar al final#
# Lista de batallas de la Guerra del Pacífico
batallas_pacifico = ["Iquique", "Angamos", "Tacna"]
print(f"Batallas iniciales: {batallas_pacifico}")
# Agregar más batallas
batallas_pacifico.append("Arica")
batallas_pacifico.append("Miraflores")
print(f"Batallas actualizadas: {batallas_pacifico}")
Batallas iniciales: ['Iquique', 'Angamos', 'Tacna']
Batallas actualizadas: ['Iquique', 'Angamos', 'Tacna', 'Arica', 'Miraflores']
18.3.2. insert() - Insertar en posición específica#
# Presidentes de Chile (ordenados cronológicamente)
presidentes = ["Pinochet", "Aylwin", "Lagos"]
print(f"Lista original: {presidentes}")
# Frei Ruiz-Tagle va entre Aylwin y Lagos (posición 2)
presidentes.insert(2, "Frei Ruiz-Tagle")
print(f"Lista corregida: {presidentes}")
Lista original: ['Pinochet', 'Aylwin', 'Lagos']
Lista corregida: ['Pinochet', 'Aylwin', 'Frei Ruiz-Tagle', 'Lagos']
18.3.3. remove() - Eliminar por valor#
# Lista de imperios (con un error)
imperios = ["Romano", "Persa", "Wakanda", "Inca", "Azteca"]
print(f"Lista original: {imperios}")
# Wakanda es ficticio, lo removemos
imperios.remove("Wakanda")
print(f"Lista corregida: {imperios}")
Lista original: ['Romano', 'Persa', 'Wakanda', 'Inca', 'Azteca']
Lista corregida: ['Romano', 'Persa', 'Inca', 'Azteca']
18.3.4. pop() - Eliminar y retornar#
# Ciudades capitales de América del Sur
capitales = ["Santiago", "Buenos Aires", "Lima", "Brasilia", "Asunción"]
print(f"Capitales: {capitales}")
# pop() sin argumento elimina el último
ultima = capitales.pop()
print(f"Capital eliminada: {ultima}")
print(f"Lista restante: {capitales}")
# pop(índice) elimina en posición específica
segunda = capitales.pop(1)
print(f"\nCapital eliminada (posición 1): {segunda}")
print(f"Lista final: {capitales}")
Capitales: ['Santiago', 'Buenos Aires', 'Lima', 'Brasilia', 'Asunción']
Capital eliminada: Asunción
Lista restante: ['Santiago', 'Buenos Aires', 'Lima', 'Brasilia']
Capital eliminada (posición 1): Buenos Aires
Lista final: ['Santiago', 'Lima', 'Brasilia']
18.3.5. sort() - Ordenar la lista#
# Años de revoluciones importantes
anios_revoluciones = [1789, 1917, 1810, 1776, 1959]
print(f"Sin ordenar: {anios_revoluciones}")
# Ordenar ascendente
anios_revoluciones.sort()
print(f"Ordenado (ascendente): {anios_revoluciones}")
# Ordenar descendente
anios_revoluciones.sort(reverse=True)
print(f"Ordenado (descendente): {anios_revoluciones}")
Sin ordenar: [1789, 1917, 1810, 1776, 1959]
Ordenado (ascendente): [1776, 1789, 1810, 1917, 1959]
Ordenado (descendente): [1959, 1917, 1810, 1789, 1776]
18.3.6. reverse() - Invertir el orden#
# Dinastías egipcias (orden cronológico)
dinastias = ["Antiguo", "Medio", "Nuevo", "Tardío"]
print(f"Orden cronológico: {dinastias}")
# Invertir para ver del más reciente al más antiguo
dinastias.reverse()
print(f"Orden inverso: {dinastias}")
Orden cronológico: ['Antiguo', 'Medio', 'Nuevo', 'Tardío']
Orden inverso: ['Tardío', 'Nuevo', 'Medio', 'Antiguo']
18.3.7. len() - Contar elementos#
# Países que participaron en la Primera Guerra Mundial (Aliados principales)
aliados_wwi = ["Francia", "Reino Unido", "Rusia", "Italia", "Estados Unidos"]
cantidad = len(aliados_wwi)
print(f"Los principales Aliados fueron {cantidad} países:")
print(aliados_wwi)
Los principales Aliados fueron 5 países:
['Francia', 'Reino Unido', 'Rusia', 'Italia', 'Estados Unidos']
18.3.8. Resumen de Métodos de Listas#
Método |
Descripción |
Ejemplo |
|---|---|---|
|
Agrega |
|
|
Inserta |
|
|
Elimina primera ocurrencia de |
|
|
Elimina y retorna elemento en |
|
|
Ordena la lista |
|
|
Invierte el orden |
|
|
Vacía la lista |
|
|
Crea una copia |
|
Tabla 16.1: Métodos principales de listas
18.4. Métodos de Strings#
Los strings (cadenas de texto) tienen métodos muy útiles para procesar textos históricos, nombres, y documentos.
18.4.1. Cambio de Mayúsculas/Minúsculas#
# Texto de un documento histórico
documento = "Acta de Independencia de Chile"
print(f"Original: {documento}")
print(f"Mayúsculas: {documento.upper()}")
print(f"Minúsculas: {documento.lower()}")
print(f"Capitalizado: {documento.title()}")
print(f"Primera mayúscula: {documento.capitalize()}")
Original: Acta de Independencia de Chile
Mayúsculas: ACTA DE INDEPENDENCIA DE CHILE
Minúsculas: acta de independencia de chile
Capitalizado: Acta De Independencia De Chile
Primera mayúscula: Acta de independencia de chile
18.4.2. split() - Dividir texto#
# Frase histórica
frase = "La aurora de Chile nos anuncia la libertad"
palabras = frase.split() # Divide por espacios
print(f"Palabras: {palabras}")
print(f"Cantidad de palabras: {len(palabras)}")
# Dividir por otro carácter
fecha = "18-09-1810"
partes = fecha.split("-")
print(f"\nFecha dividida: {partes}")
print(f"Día: {partes[0]}, Mes: {partes[1]}, Año: {partes[2]}")
Palabras: ['La', 'aurora', 'de', 'Chile', 'nos', 'anuncia', 'la', 'libertad']
Cantidad de palabras: 8
Fecha dividida: ['18', '09', '1810']
Día: 18, Mes: 09, Año: 1810
18.4.3. join() - Unir elementos#
# Lista de héroes
heroes = ["O'Higgins", "Carrera", "Rodríguez", "Prat"]
# Unir con coma
texto = ", ".join(heroes)
print(f"Héroes: {texto}")
# Unir con " y "
texto2 = " y ".join(heroes[:2]) # Solo los dos primeros
print(f"Los líderes fueron: {texto2}")
Héroes: O'Higgins, Carrera, Rodríguez, Prat
Los líderes fueron: O'Higgins y Carrera
18.4.4. strip() - Eliminar espacios#
# Texto con espacios innecesarios (común en datos históricos)
nombre_sucio = " Bernardo O'Higgins "
print(f"Original: '{nombre_sucio}'")
print(f"Limpio: '{nombre_sucio.strip()}'")
print(f"Solo izquierda: '{nombre_sucio.lstrip()}'")
print(f"Solo derecha: '{nombre_sucio.rstrip()}'")
Original: ' Bernardo O'Higgins '
Limpio: 'Bernardo O'Higgins'
Solo izquierda: 'Bernardo O'Higgins '
Solo derecha: ' Bernardo O'Higgins'
18.4.5. replace() - Reemplazar texto#
# Corregir nombres en documentos
texto = "El rey Fernando VII gobernaba España"
print(f"Original: {texto}")
texto_corregido = texto.replace("rey", "monarca")
print(f"Corregido: {texto_corregido}")
# Múltiples reemplazos encadenados
modernizado = texto.replace("rey", "monarca").replace("gobernaba", "reinaba en")
print(f"Modernizado: {modernizado}")
Original: El rey Fernando VII gobernaba España
Corregido: El monarca Fernando VII gobernaba España
Modernizado: El monarca Fernando VII reinaba en España
18.4.6. find() - Buscar texto#
# Buscar palabras en un texto histórico
discurso = "La independencia de Chile fue proclamada en 1818"
# find() retorna la posición donde empieza la palabra
pos = discurso.find("Chile")
print(f"'Chile' está en la posición: {pos}")
# Si no encuentra, retorna -1
pos2 = discurso.find("Argentina")
print(f"'Argentina' está en la posición: {pos2}")
'Chile' está en la posición: 20
'Argentina' está en la posición: -1
18.4.7. startswith() y endswith() - Verificar inicio/fin#
# Clasificar documentos históricos
documento = "Acta de Independencia de Chile.pdf"
print(f"¿Empieza con 'Acta'?: {documento.startswith('Acta')}")
print(f"¿Termina con '.pdf'?: {documento.endswith('.pdf')}")
print(f"¿Termina con '.doc'?: {documento.endswith('.doc')}")
¿Empieza con 'Acta'?: True
¿Termina con '.pdf'?: True
¿Termina con '.doc'?: False
18.4.8. Operador in - Verificar contenido#
# Verificar si una palabra está en el texto
texto = "La batalla de Maipú selló la independencia de Chile"
print(f"¿'Maipú' está en el texto?: {'Maipú' in texto}")
print(f"¿'Chacabuco' está en el texto?: {'Chacabuco' in texto}")
¿'Maipú' está en el texto?: True
¿'Chacabuco' está en el texto?: False
18.4.9. Resumen de Métodos de Strings#
Método |
Descripción |
Ejemplo |
|---|---|---|
|
Todo a mayúsculas |
|
|
Todo a minúsculas |
|
|
Capitaliza palabras |
|
|
Elimina espacios |
|
|
Divide por separador |
|
|
Une con separador |
|
|
Reemplaza a por b |
|
|
Busca posición de x |
|
Tabla 16.2: Métodos principales de strings
18.5. Formateo de Strings#
Python ofrece varias formas de formatear texto. La más moderna y recomendada son los f-strings.
18.5.1. F-strings (Recomendado)#
# Datos de un evento histórico
evento = "Batalla de Maipú"
anio = 1818
general = "José de San Martín"
# F-string: se antepone 'f' y se usan llaves {}
mensaje = f"La {evento} ocurrió en {anio}, liderada por {general}."
print(mensaje)
# También permite operaciones
print(f"Han pasado {2025 - anio} años desde entonces.")
La Batalla de Maipú ocurrió en 1818, liderada por José de San Martín.
Han pasado 207 años desde entonces.
18.5.2. Formato de números#
# Población del Imperio Romano
poblacion = 70000000
tasa_crecimiento = 2.5678
# Formato con separador de miles
print(f"Población: {poblacion:,} habitantes")
# Formato con decimales
print(f"Tasa de crecimiento: {tasa_crecimiento:.2f}%")
# Porcentaje
proporcion = 0.4532
print(f"Proporción: {proporcion:.1%}")
Población: 70,000,000 habitantes
Tasa de crecimiento: 2.57%
Proporción: 45.3%
18.6. 🏛️ Ejemplo Completo: Procesando un Documento Histórico#
# Texto de un documento histórico (simulado)
documento = """ ACTA DE INDEPENDENCIA DE CHILE
La junta de gobierno del reino de chile,
en nombre del pueblo, declara la independencia
de la corona española el día 12 de febrero de 1818. """
# 1. Limpiar espacios
doc_limpio = documento.strip()
# 2. Convertir a minúsculas para análisis
doc_lower = doc_limpio.lower()
# 3. Contar palabras
palabras = doc_lower.split()
num_palabras = len(palabras)
# 4. Buscar palabras clave
tiene_independencia = "independencia" in doc_lower
tiene_chile = "chile" in doc_lower
# 5. Reemplazar términos
doc_moderno = doc_limpio.replace("reino", "país").replace("corona", "dominio")
# Mostrar resultados
print("=" * 50)
print("ANÁLISIS DEL DOCUMENTO")
print("=" * 50)
print(f"Número de palabras: {num_palabras}")
print(f"¿Menciona 'independencia'?: {'Sí' if tiene_independencia else 'No'}")
print(f"¿Menciona 'Chile'?: {'Sí' if tiene_chile else 'No'}")
print("\nVersión modernizada:")
print(doc_moderno)
==================================================
ANÁLISIS DEL DOCUMENTO
==================================================
Número de palabras: 31
¿Menciona 'independencia'?: Sí
¿Menciona 'Chile'?: Sí
Versión modernizada:
ACTA DE INDEPENDENCIA DE CHILE
La junta de gobierno del país de chile,
en nombre del pueblo, declara la independencia
de la dominio española el día 12 de febrero de 1818.
18.7. 📝 Actividad de Cierre#
18.7.1. Ejercicio 1: Manipulación de Lista Histórica#
Dada la lista de civilizaciones antiguas, realiza las operaciones indicadas:
civilizaciones = ["Egipto", "Grecia", "Roma", "Persia"]
# 1. Agrega "Mesopotamia" al inicio de la lista
# 2. Agrega "China" al final
# 3. Ordena la lista alfabéticamente
# 4. Muestra la lista final y cuántos elementos tiene
18.7.2. Ejercicio 2: Procesamiento de Nombre Histórico#
Procesa el siguiente nombre histórico mal escrito:
nombre_sucio = " DIEGO PORTALES palazuelos "
# 1. Elimina los espacios al inicio y final
# 2. Convierte a formato título (Primera Letra Mayúscula)
# 3. Cuenta cuántas letras tiene (sin espacios)
# 4. Muestra el resultado
18.7.3. Ejercicio 3: Análisis de Fecha Histórica#
Analiza la siguiente fecha histórica:
fecha = "21-05-1879" # Combate Naval de Iquique
# 1. Divide la fecha en día, mes y año
# 2. Crea un mensaje que diga: "El Combate Naval de Iquique fue el día X de mes Y de año Z"
# 3. Calcula cuántos años han pasado desde entonces
18.8. 📚 Resumen del Capítulo#
En este capítulo aprendimos a:
Manipular listas con métodos como
append(),insert(),remove(),sort()Procesar textos con
upper(),lower(),split(),join(),replace()Formatear salidas con f-strings
Combinar técnicas para análisis básico de documentos
Estas herramientas son fundamentales para procesar datos históricos de manera eficiente.
18.9. 📖 Referencias#
Python Software Foundation. (2024). String Methods. https://docs.python.org/3/library/stdtypes.html#string-methods
Python Software Foundation. (2024). List Methods. https://docs.python.org/3/tutorial/datastructures.html
Programming Historian. (2024). Manipular strings en Python. https://programminghistorian.org/es/lecciones/manipular-cadenas-de-caracteres-en-python