10. Manejo de Cadenas de Texto
📝 10.1 Qué es una cadena (str)
Section titled “📝 10.1 Qué es una cadena (str)”Concepto de cadena (string)
Section titled “Concepto de cadena (string)”Una cadena (string o str) es un tipo de dato que representa una secuencia de caracteres. Es uno de los tipos de datos más utilizados en programación para trabajar con texto.
Características de las cadenas
Section titled “Características de las cadenas”| Característica | Descripción |
|---|---|
| Inmutables | No se pueden modificar después de creadas (se crean nuevas) |
| Secuenciales | Los caracteres tienen un orden y posición (índice) |
| Iterables | Se pueden recorrer carácter por carácter |
| Indexables | Se accede a caracteres mediante índices (desde 0) |
Formas de crear cadenas
Section titled “Formas de crear cadenas”# Comillas simplestexto1 = 'Hola'
# Comillas doblestexto2 = "Mundo"
# Comillas triples (multilínea)texto3 = """Textoen variaslíneas"""Propósito
Section titled “Propósito”- Almacenar texto: Nombres, mensajes, descripciones
- Procesar información: Validar, formatear, transformar
- Comunicación: Mostrar mensajes al usuario
- Manipulación de datos: Limpiar, buscar, extraer información
Ejemplo: Crear cadenas
Section titled “Ejemplo: Crear cadenas”# Diferentes formas de crear cadenasnombre = 'Ana'apellido = "García"mensaje = "Hola, ¿cómo estás?"
print(nombre) # Anaprint(apellido) # Garcíaprint(mensaje) # Hola, ¿cómo estás?
# Cadenas con comillas dentrotexto1 = "Ella dijo: 'Hola'"texto2 = 'El libro "Python" es genial'print(texto1)print(texto2)Ejemplo: Cadenas multilínea
Section titled “Ejemplo: Cadenas multilínea”# Cadenas de varias líneas con triple comillapoema = """Roses are red,Violets are blue,Python is awesome,And so are you!"""
print(poema)
# También funciona con comillas simplesmensaje = '''Este es un mensajeque ocupavarias líneas'''print(mensaje)Ejemplo: Acceso por índice
Section titled “Ejemplo: Acceso por índice”texto = "Python"
# Índices positivos (desde el inicio)print(texto[0]) # P (primer carácter)print(texto[1]) # yprint(texto[5]) # n (último carácter)
# Índices negativos (desde el final)print(texto[-1]) # n (último)print(texto[-2]) # o (penúltimo)print(texto[-6]) # P (primero desde el final)Ejemplo: Slicing (rebanado)
Section titled “Ejemplo: Slicing (rebanado)”texto = "Python Programming"
# Obtener subcadenasprint(texto[0:6]) # Pythonprint(texto[7:18]) # Programmingprint(texto[:6]) # Python (desde inicio)print(texto[7:]) # Programming (hasta final)print(texto[::2]) # Pto rgamn (cada 2 caracteres)print(texto[::-1]) # gnimmargorP nohtyP (invertida)Ejemplo: Inmutabilidad
Section titled “Ejemplo: Inmutabilidad”texto = "Hola"
# Las cadenas son inmutables# texto[0] = 'h' # Error: no se puede modificar
# Para "modificar", crear nueva cadenatexto_nuevo = 'h' + texto[1:]print(texto_nuevo) # hola
# O usar métodos que retornan nuevas cadenastexto_mayus = texto.upper()print(texto) # Hola (original sin cambios)print(texto_mayus) # HOLA (nueva cadena)🔧 10.2 Operaciones básicas: concatenación, repetición, longitud
Section titled “🔧 10.2 Operaciones básicas: concatenación, repetición, longitud”Operaciones principales
Section titled “Operaciones principales”| Operación | Operador | Descripción |
|---|---|---|
| Concatenación | + | Une dos o más cadenas en una sola |
| Repetición | * | Crea una nueva cadena repitiendo la original |
| Longitud | len() | Retorna el número de caracteres |
| Comparación | ==, !=, <, > | Compara cadenas alfabéticamente |
Ejemplo: Concatenación
Section titled “Ejemplo: Concatenación”# Unir cadenas con +nombre = "Ana"apellido = "García"nombre_completo = nombre + " " + apellidoprint(nombre_completo) # Ana García
# Concatenar múltiples cadenassaludo = "Hola" + ", " + nombre + "!"print(saludo) # Hola, Ana!
# Concatenar con números (requiere conversión)edad = 25mensaje = nombre + " tiene " + str(edad) + " años"print(mensaje) # Ana tiene 25 añosEjemplo: Repetición
Section titled “Ejemplo: Repetición”# Repetir cadenas con *linea = "-" * 30print(linea) # ------------------------------
# Crear patronespatron = "Python " * 3print(patron) # Python Python Python
# Separadores visualesprint("=" * 40)print("TÍTULO IMPORTANTE")print("=" * 40)
# Espaciosespacios = " " * 10print("Texto" + espacios + "Alineado")Ejemplo: Longitud con len()
Section titled “Ejemplo: Longitud con len()”# Obtener longitud de cadenastexto = "Python"print(len(texto)) # 6
nombre = "Ana García"print(len(nombre)) # 10 (incluye el espacio)
# Validar longitudcontrasena = input("Ingresa contraseña: ")if len(contrasena) < 8: print("La contraseña debe tener al menos 8 caracteres")else: print("Contraseña válida")
# Contar caracteresmensaje = "Hola, ¿cómo estás?"print(f"El mensaje tiene {len(mensaje)} caracteres")Ejemplo: Comparación de cadenas
Section titled “Ejemplo: Comparación de cadenas”# Comparar cadenastexto1 = "Python"texto2 = "python"texto3 = "Python"
# Igualdadprint(texto1 == texto3) # Trueprint(texto1 == texto2) # False (sensible a mayúsculas)
# Diferenciaprint(texto1 != texto2) # True
# Comparación alfabéticaprint("Ana" < "Carlos") # True (A viene antes que C)print("abc" < "abd") # Trueprint("Python" > "Java") # True (P > J)Ejemplo: Operaciones combinadas
Section titled “Ejemplo: Operaciones combinadas”# Combinar operacionesnombre = "Ana"apellido = "García"
# Concatenación + repeticiónseparador = "-" * 20nombre_completo = nombre + " " + apellidoprint(separador)print(nombre_completo)print(separador)
# Longitud + concatenacióntexto = "Python"info = texto + " tiene " + str(len(texto)) + " letras"print(info) # Python tiene 6 letras🔤 10.3 Métodos de cadenas: lower(), upper(), replace()
Section titled “🔤 10.3 Métodos de cadenas: lower(), upper(), replace()”Métodos de transformación
Section titled “Métodos de transformación”| Método | Descripción |
|---|---|
lower() | Convierte toda la cadena a minúsculas |
upper() | Convierte toda la cadena a MAYÚSCULAS |
capitalize() | Primera letra en mayúscula, resto en minúsculas |
title() | Primera letra de cada palabra en mayúscula |
replace(a, b) | Reemplaza todas las ocurrencias de a por b |
Métodos de limpieza
Section titled “Métodos de limpieza”| Método | Descripción |
|---|---|
strip() | Elimina espacios al inicio y final |
lstrip() | Elimina espacios al inicio |
rstrip() | Elimina espacios al final |
Características importantes
Section titled “Características importantes”- Retornan nueva cadena: No modifican la original (inmutabilidad)
- Encadenables: Se pueden usar varios métodos seguidos
- Case-sensitive: Distinguen mayúsculas y minúsculas
Ejemplo: lower() y upper()
Section titled “Ejemplo: lower() y upper()”# Convertir a minúsculastexto = "PYTHON es GENIAL"minusculas = texto.lower()print(minusculas) # python es genial
# Convertir a mayúsculastexto = "python es genial"mayusculas = texto.upper()print(mayusculas) # PYTHON ES GENIAL
# Comparación insensible a mayúsculasusuario = input("Usuario: ")if usuario.lower() == "admin": print("Acceso de administrador")
# Normalizar entradaemail = input("Email: ").lower()print(f"Email registrado: {email}")Ejemplo: capitalize() y title()
Section titled “Ejemplo: capitalize() y title()”# Primera letra en mayúsculatexto = "python programming"print(texto.capitalize()) # Python programming
# Primera letra de cada palabratitulo = "aprende python desde cero"print(titulo.title()) # Aprende Python Desde Cero
# Formatear nombresnombre = "ana maría garcía"print(nombre.title()) # Ana María García
# Títulos de libroslibro = "el arte de la programación"print(libro.title()) # El Arte De La ProgramaciónEjemplo: replace()
Section titled “Ejemplo: replace()”# Reemplazar textotexto = "Me gusta Java"nuevo = texto.replace("Java", "Python")print(nuevo) # Me gusta Python
# Reemplazar múltiples ocurrenciasfrase = "el gato y el perro y el pájaro"nueva = frase.replace("el", "un")print(nueva) # un gato y un perro y un pájaro
# Eliminar caracterestelefono = "123-456-7890"sin_guiones = telefono.replace("-", "")print(sin_guiones) # 1234567890
# Censurar palabrastexto = "Esta palabra es mala"censurado = texto.replace("mala", "****")print(censurado) # Esta palabra es ****Ejemplo: strip(), lstrip(), rstrip()
Section titled “Ejemplo: strip(), lstrip(), rstrip()”# Eliminar espacios en blancotexto = " Python "print(texto.strip()) # "Python"print(texto.lstrip()) # "Python "print(texto.rstrip()) # " Python"
# Limpiar entrada de usuarionombre = input("Nombre: ").strip()print(f"Hola, {nombre}")
# Eliminar caracteres específicostexto = "***Python***"print(texto.strip("*")) # Python
# Limpiar datosprecio = "$$$100$$$"limpio = precio.strip("$")print(limpio) # 100Ejemplo: Métodos encadenados
Section titled “Ejemplo: Métodos encadenados”# Combinar múltiples métodostexto = " PYTHON programming "
# Limpiar y convertirresultado = texto.strip().lower()print(resultado) # python programming
# Transformación completanombre = " ana GARCÍA "nombre_limpio = nombre.strip().title()print(nombre_limpio) # Ana García
# Normalizar y reemplazaremail = " USER@EXAMPLE.COM "email_limpio = email.strip().lower().replace("example", "gmail")print(email_limpio) # user@gmail.com🔍 10.4 Búsqueda de texto: in, find(), startswith()
Section titled “🔍 10.4 Búsqueda de texto: in, find(), startswith()”Métodos de búsqueda
Section titled “Métodos de búsqueda”| Método/Operador | Descripción | Retorna |
|---|---|---|
in | Verifica si contiene subcadena | True/False |
find(sub) | Busca primera ocurrencia | Índice o -1 |
startswith(pre) | Verifica si comienza con prefijo | True/False |
endswith(suf) | Verifica si termina con sufijo | True/False |
count(sub) | Cuenta ocurrencias | Número entero |
Ejemplo: Operador in
Section titled “Ejemplo: Operador in”# Verificar si contiene subcadenatexto = "Python es un lenguaje de programación"
print("Python" in texto) # Trueprint("Java" in texto) # Falseprint("programación" in texto) # True
# Uso en condicionalesemail = "usuario@gmail.com"if "@" in email: print("Email válido")else: print("Email inválido")
# Verificar palabras prohibidascomentario = "Este es un comentario"palabras_prohibidas = ["spam", "publicidad"]
for palabra in palabras_prohibidas: if palabra in comentario.lower(): print(f"Comentario rechazado: contiene '{palabra}'")Ejemplo: find()
Section titled “Ejemplo: find()”# Buscar posición de subcadenatexto = "Python es genial"
# Encontrar índiceposicion = texto.find("es")print(posicion) # 7
# No encontradoposicion = texto.find("Java")print(posicion) # -1
# Buscar desde una posicióntexto = "Python Python Python"primera = texto.find("Python")segunda = texto.find("Python", primera + 1)print(f"Primera: {primera}, Segunda: {segunda}")
# Validar y extraeremail = "usuario@gmail.com"arroba = email.find("@")if arroba != -1: usuario = email[:arroba] dominio = email[arroba+1:] print(f"Usuario: {usuario}, Dominio: {dominio}")Ejemplo: startswith() y endswith()
Section titled “Ejemplo: startswith() y endswith()”# Verificar iniciotexto = "Python es genial"print(texto.startswith("Python")) # Trueprint(texto.startswith("Java")) # False
# Verificar finalarchivo = "documento.pdf"print(archivo.endswith(".pdf")) # Trueprint(archivo.endswith(".txt")) # False
# Validar extensiones de archivoarchivos = ["imagen.jpg", "video.mp4", "documento.pdf", "script.py"]
for archivo in archivos: if archivo.endswith(".py"): print(f"{archivo} es un archivo Python") elif archivo.endswith((".jpg", ".png")): print(f"{archivo} es una imagen")
# Validar URLsurl = "https://www.python.org"if url.startswith("https://"): print("Conexión segura")elif url.startswith("http://"): print("Conexión no segura")Ejemplo: count()
Section titled “Ejemplo: count()”# Contar ocurrenciastexto = "Python es Python y Python es genial"cantidad = texto.count("Python")print(f"'Python' aparece {cantidad} veces") # 3
# Contar caracteresfrase = "Hola, ¿cómo estás?"vocales = "aeiouáéíóú"total_vocales = sum(frase.lower().count(v) for v in vocales)print(f"Vocales: {total_vocales}")
# Contar palabrastexto = "Python es un lenguaje de programación"palabras = texto.count(" ") + 1print(f"Palabras: {palabras}")
# Análisis de textotexto = "El gato y el perro y el pájaro"print(f"'el' aparece {texto.lower().count('el')} veces")Ejemplo: Programa de búsqueda
Section titled “Ejemplo: Programa de búsqueda”# Buscador de palabras en textotexto = """Python es un lenguaje de programación interpretado.Python es fácil de aprender.Python tiene una gran comunidad."""
palabra = input("¿Qué palabra buscar? ")
# Verificar si existeif palabra in texto.lower(): # Contar ocurrencias cantidad = texto.lower().count(palabra.lower())
# Encontrar primera posición posicion = texto.lower().find(palabra.lower())
print(f"✅ '{palabra}' encontrada") print(f"Aparece {cantidad} veces") print(f"Primera aparición en posición {posicion}")else: print(f"❌ '{palabra}' no encontrada")✂️ 10.5 Manipulación de texto con split() y join()
Section titled “✂️ 10.5 Manipulación de texto con split() y join()”Métodos split() y join()
Section titled “Métodos split() y join()”| Método | Descripción | Conversión |
|---|---|---|
split(sep) | Divide cadena en lista usando separador | Cadena → Lista |
join(lista) | Une elementos de lista con separador | Lista → Cadena |
Casos de uso
Section titled “Casos de uso”- split(): Procesar CSV, separar palabras, parsear datos
- join(): Construir URLs, crear rutas, formatear salida
Ejemplo: split() básico
Section titled “Ejemplo: split() básico”# Dividir por espacios (por defecto)texto = "Python es genial"palabras = texto.split()print(palabras) # ['Python', 'es', 'genial']
# Dividir por separador específicofecha = "15/01/2024"partes = fecha.split("/")print(partes) # ['15', '01', '2024']
# Dividir por comasfrutas = "manzana,pera,uva,naranja"lista_frutas = frutas.split(",")print(lista_frutas) # ['manzana', 'pera', 'uva', 'naranja']
# Procesar entrada del usuarioentrada = input("Ingresa números separados por espacios: ")numeros = entrada.split()print(f"Ingresaste {len(numeros)} números")Ejemplo: join() básico
Section titled “Ejemplo: join() básico”# Unir lista con espaciospalabras = ["Python", "es", "genial"]texto = " ".join(palabras)print(texto) # Python es genial
# Unir con guionespalabras = ["hola", "mundo", "python"]url_slug = "-".join(palabras)print(url_slug) # hola-mundo-python
# Unir con saltos de línealineas = ["Primera línea", "Segunda línea", "Tercera línea"]texto = "\n".join(lineas)print(texto)
# Crear ruta de archivocarpetas = ["usuarios", "documentos", "python"]ruta = "/".join(carpetas)print(ruta) # usuarios/documentos/pythonEjemplo: split() y join() combinados
Section titled “Ejemplo: split() y join() combinados”# Invertir palabras en una frasefrase = "Python es un lenguaje genial"palabras = frase.split()palabras_invertidas = palabras[::-1]frase_invertida = " ".join(palabras_invertidas)print(frase_invertida) # genial lenguaje un es Python
# Reemplazar espacios por guionestexto = "Hola Mundo Python"con_guiones = "-".join(texto.split())print(con_guiones) # Hola-Mundo-Python
# Limpiar espacios extrastexto = "Python es genial"limpio = " ".join(texto.split())print(limpio) # Python es genialEjemplo: Procesar datos CSV
Section titled “Ejemplo: Procesar datos CSV”# Procesar línea CSVlinea_csv = "Ana,25,Madrid,Ingeniería"datos = linea_csv.split(",")
nombre = datos[0]edad = int(datos[1])ciudad = datos[2]carrera = datos[3]
print(f"Nombre: {nombre}")print(f"Edad: {edad}")print(f"Ciudad: {ciudad}")print(f"Carrera: {carrera}")
# Crear CSV desde datospersona = ["Carlos", "30", "Barcelona", "Medicina"]linea = ",".join(persona)print(linea) # Carlos,30,Barcelona,MedicinaEjemplo: Contar palabras
Section titled “Ejemplo: Contar palabras”# Contador de palabrastexto = """Python es un lenguaje de programación interpretado.Su filosofía hace hincapié en la legibilidad del código.Python es multiparadigma y multiplataforma."""
# Dividir en palabraspalabras = texto.split()
# Contartotal_palabras = len(palabras)print(f"Total de palabras: {total_palabras}")
# Palabra más largapalabra_mas_larga = max(palabras, key=len)print(f"Palabra más larga: {palabra_mas_larga} ({len(palabra_mas_larga)} letras)")
# Palabras únicaspalabras_unicas = set(palabra.lower() for palabra in palabras)print(f"Palabras únicas: {len(palabras_unicas)}")Ejemplo: Formatear nombres
Section titled “Ejemplo: Formatear nombres”# Formatear nombre completonombre_completo = "ana maría garcía lópez"
# Dividir en palabraspalabras = nombre_completo.split()
# Capitalizar cada palabrapalabras_capitalizadas = [palabra.capitalize() for palabra in palabras]
# Unir de nuevonombre_formateado = " ".join(palabras_capitalizadas)print(nombre_formateado) # Ana María García López
# Versión cortanombre_formateado = " ".join(palabra.capitalize() for palabra in nombre_completo.split())print(nombre_formateado)Ejemplo: Analizador de texto completo
Section titled “Ejemplo: Analizador de texto completo”# Analizador de textoprint("=== ANALIZADOR DE TEXTO ===\n")
texto = input("Ingresa un texto: ")
# Dividir en palabraspalabras = texto.split()
# Estadísticastotal_palabras = len(palabras)total_caracteres = len(texto)total_caracteres_sin_espacios = len(texto.replace(" ", ""))
# Palabra más larga y más cortapalabra_mas_larga = max(palabras, key=len)palabra_mas_corta = min(palabras, key=len)
# Resultadosprint(f"\n{'='*40}")print("RESULTADOS DEL ANÁLISIS")print(f"{'='*40}")print(f"Total de palabras: {total_palabras}")print(f"Total de caracteres: {total_caracteres}")print(f"Caracteres sin espacios: {total_caracteres_sin_espacios}")print(f"Palabra más larga: {palabra_mas_larga} ({len(palabra_mas_larga)} letras)")print(f"Palabra más corta: {palabra_mas_corta} ({len(palabra_mas_corta)} letras)")print(f"Promedio de letras por palabra: {total_caracteres_sin_espacios/total_palabras:.1f}")print(f"{'='*40}")🎯 Resumen de la lección
Section titled “🎯 Resumen de la lección”
🐝