🐍 Guía de Aula Invertida
vistas

Dominando los String en Python

Aprende a crear, manipular y transformar cadenas de texto mediante ejemplos prácticos que puedes editar y ejecutar en vivo, explicaciones sencillas y ejercicios guiados.

RC
Ing. Roy Carrasco
Facultad de Ingeniería de Sistemas · UAB

Bienvenido

Los strings son uno de los tipos de datos más utilizados en programación. Todo programa trabaja con nombres, mensajes, direcciones, contraseñas, archivos o información escrita, y todos esos datos se representan mediante cadenas de texto.

Objetivo del módulo

Al finalizar esta guía serás capaz de crear, acceder, modificar y manipular cadenas utilizando las principales herramientas que ofrece Python.

💻 Código en vivo

Todos los bloques con el encabezado Python son editables: presiona ✏️ Editar para modificar el código y ▶ Ejecutar para correrlo de verdad en tu navegador (usa Pyodide, un Python real compilado a WebAssembly). La primera ejecución tarda unos segundos porque descarga el intérprete.

📖 Aprende

Conceptos explicados paso a paso.

💻 Practica

Decenas de ejemplos editables y ejecutables.

🎯 Domina

Ejercicios de dificultad creciente.

¿Qué es un String?

Un string es una secuencia de caracteres utilizada para almacenar texto. En Python, un string puede contener letras, números, símbolos, espacios y caracteres especiales.

Python
nombre = "Roy"
ciudad = "Cochabamba"
mensaje = "Bienvenido a Python"
print(nombre)
print(ciudad)
print(mensaje)

En Python, un string es un objeto, lo que significa que posee propiedades y métodos que permiten transformarlo fácilmente.

Crear Strings

Existen varias formas de crear una cadena de texto en Python. Todas representan el mismo tipo de dato, pero cada una resulta útil en situaciones diferentes.

Python
nombre = "Roy"
apellido = 'Carrasco'
universidad = "Universidad Adventista de Bolivia"
print(nombre)
print(apellido)
print(universidad)
Importante

Todo lo que esté entre comillas será interpretado por Python como una cadena de texto (str).

Comillas simples y dobles

Python acepta indistintamente comillas simples y dobles.

Python
saludo = "Hola"
mensaje = 'Bienvenido'
print(saludo)
print(mensaje)

Comillas dobles

Son las más utilizadas por la comunidad de Python y la mayoría de ejemplos oficiales.

Comillas simples

Funcionan exactamente igual y suelen emplearse cuando la cadena contiene comillas dobles.

Texto que contiene comillas

Cuando una cadena contiene comillas, resulta conveniente utilizar el otro tipo de comillas para evitar errores.

Python
frase = "Ella dijo 'Hola'"
respuesta = 'Él respondió "Adiós"'
print(frase)
print(respuesta)
Error frecuente

No mezcles el mismo tipo de comillas al inicio y al final de una cadena.

Comillas triples

Las comillas triples permiten escribir texto de varias líneas sin utilizar el carácter \n.

Python
mensaje = """
Bienvenido al sistema.
Este texto ocupa
varias líneas.
"""
print(mensaje)

También se utilizan para escribir documentación dentro de funciones y clases.

String vacío

Una cadena también puede estar vacía. Esto es muy útil cuando una variable almacenará texto más adelante.

Python
nombre = ""
apellido = ''
print(nombre)
print(apellido)
Recuerda

Una cadena vacía tiene longitud cero, pero sigue siendo un objeto de tipo str.

Resumen

FormaEjemploUso recomendado
Comillas dobles"Hola"Uso general
Comillas simples'Hola'Alternativa equivalente
Comillas triples"""Texto"""Texto multilínea
Cadena vacía""Inicializar variables

Acceder a los caracteres (Índices)

Cada carácter de un string posee una posición llamada índice. Los índices comienzan siempre en 0.

Idea importante

Python numera cada carácter individualmente, incluyendo espacios.

012345
Python
Python
texto = "Python"
print(texto[0])
print(texto[1])
print(texto[5])

texto[0]

Devuelve la primera letra.

texto[1]

Devuelve la segunda letra.

texto[5]

Devuelve la última letra.

Índices negativos

Python también puede contar desde el final utilizando números negativos.

-6-5-4-3-2-1
Python
Python
texto = "Python"
print(texto[-1])
print(texto[-2])
print(texto[-6])
Muy útil

Los índices negativos permiten acceder rápidamente al último elemento sin conocer la longitud del string.

Ejemplos prácticos

Python
nombre = "Alejandro"
print(nombre[0])
print(nombre[3])
print(nombre[-1])
print(nombre[-3])

Salida:

Consola
A
j
o
d

Los espacios también cuentan

Un error frecuente es pensar que los espacios no tienen posición.

Python
frase = "Hola Mundo"
print(frase[4])
print(frase[5])
Resultado

La posición 4 corresponde al espacio entre las palabras, mientras que la posición 5 corresponde a la letra M de "Mundo".

Error común: IndexError

Si intentas acceder a una posición que no existe, Python producirá un error. Prueba ejecutar este bloque para ver el error real.

Python
texto = "Python"
print(texto[20])
¿Por qué ocurre?

La palabra Python solamente posee seis caracteres. No existe la posición número 20.

¿Cuántos caracteres tiene un string?

La función len() devuelve la cantidad total de caracteres de una cadena.

Python
texto = "Python"
print(len(texto))
Resultado

La función devuelve 6, ya que la palabra "Python" tiene seis caracteres.

Mini reto

Sin ejecutar el programa, intenta responder las siguientes preguntas. Luego verifica editando y ejecutando el bloque de código.

  1. ¿Qué devuelve texto[0] si texto = "Programación"?
  2. ¿Qué devuelve texto[-1]?
  3. ¿Cuál es el resultado de len(texto)?
  4. ¿Qué error produce texto[50]?
Python
texto = "Programación"
print(texto[0])
print(texto[-1])
print(len(texto))
Consejo del docente

Antes de ejecutar un programa, intenta predecir el resultado. Ese hábito acelera muchísimo el aprendizaje de programación.

Strings inmutables

Un string en Python es inmutable: una vez creado, no se puede cambiar carácter por carácter. Cualquier "modificación" en realidad crea un string nuevo.

Python
texto = "Python"
texto[0] = "J"
print(texto)
¿Por qué falla?

Al ejecutar el bloque anterior obtendrás TypeError: 'str' object does not support item assignment. Los strings no permiten asignar directamente a una posición.

La forma correcta de "cambiar" un carácter es construir un string nuevo, por ejemplo combinando slicing y concatenación:

Python
texto = "Python"
nuevo = "J" + texto[1:]
print(nuevo)
print(texto)
Observa

texto nunca cambió: nuevo es un string completamente distinto. Esto es importante porque significa que los métodos de string (como upper() o replace()) siempre devuelven un resultado nuevo en lugar de modificar el original.

Slicing (Rebanado de cadenas)

El slicing permite extraer una parte de un string sin modificar el original.

Sintaxis

cadena[inicio:fin]

✔ Incluye el índice inicial.
✔ No incluye el índice final.

012345
Python
Python
texto = "Python"
print(texto[0:2])
print(texto[0:4])
print(texto[2:6])

Resultado del slicing

ExpresiónResultadoExplicación
texto[0:2]PyPosiciones 0 y 1
texto[0:4]PythDesde la primera hasta antes del índice 4
texto[2:6]thonDesde la letra "t"

Omitiendo índices

Python permite omitir el índice inicial o final.

Python
texto = "Programación"
print(texto[:5])
print(texto[5:])
print(texto[:])

texto[:5]

Desde el inicio hasta antes del índice 5.

texto[5:]

Desde el índice 5 hasta el final.

texto[:]

Devuelve una copia completa del string.

Paso (Step)

El tercer valor indica cuántas posiciones debe avanzar Python.

cadena[inicio:fin:paso]
Python
texto = "Programacion"
print(texto[::2])
print(texto[::3])
print(texto[::-1])
CódigoResultado
texto[::2]Pormco
texto[::3]Pgmi
texto[::-1]noicamargorP

Concatenación

Concatenar significa unir dos o más cadenas utilizando el operador +.

Python
nombre = "Roy"
apellido = "Carrasco"
completo = nombre + " " + apellido
print(completo)
Resultado: Roy Carrasco

Repetición

El operador * permite repetir un string varias veces.

Python
print("*" * 30)
print("Python " * 5)
print("-" * 50)

Ejemplo práctico

Python
titulo = " SISTEMA DE VENTAS "
print("=" * 40)
print(titulo)
print("=" * 40)

Mini laboratorio

  1. Extrae las cuatro primeras letras de "Universidad".
  2. Obtén únicamente las tres últimas letras.
  3. Invierte la palabra "Python".
  4. Concatena tu nombre y apellido.
  5. Imprime una línea de 60 signos "=".
  6. Crea un encabezado usando repetición.
Desafío

¿Puedes escribir un programa que imprima una tarjeta como esta? Pruébalo en el bloque de abajo.

Python
print("*" * 30)
print("Nombre :", "Juan Pérez")
print("Carrera:", "Ingeniería")
print("Edad   :", 20)
print("*" * 30)

Métodos de los Strings

Los strings son objetos. Esto significa que poseen métodos, es decir, funciones que permiten transformar o consultar el contenido de una cadena.

Importante

Los métodos de los strings no modifican la cadena original. Devuelven una nueva cadena con el resultado (recuerda la sección Strings inmutables).

upper()

Convierte todos los caracteres a mayúsculas.

Python
texto = "Python"
print(texto.upper())
Uso recomendado

Muy útil para realizar comparaciones de texto ignorando diferencias entre mayúsculas y minúsculas.

lower()

Convierte todos los caracteres a minúsculas.

Python
correo = "Roy.Carrasco@UAB.edu"
print(correo.lower())

capitalize()

Convierte únicamente la primera letra en mayúscula.

Python
texto = "python es divertido"
print(texto.capitalize())

title()

Convierte la primera letra de cada palabra en mayúscula.

Python
nombre = "universidad adventista de bolivia"
print(nombre.title())

swapcase()

Invierte mayúsculas por minúsculas y viceversa.

Python
texto = "PyThOn"
print(texto.swapcase())

casefold()

Es similar a lower(), pero está diseñado para realizar comparaciones de texto de manera más robusta, especialmente con caracteres internacionales.

Python
texto = "PYTHON"
print(texto.casefold())
¿Cuándo usarlo?

Cuando necesites comparar cadenas sin importar mayúsculas, minúsculas o ciertas diferencias de idioma.

Resumen de métodos vistos

MétodoDescripciónEjemplo
upper()Convierte a mayúsculas.PYTHON
lower()Convierte a minúsculas.python
capitalize()Primera letra en mayúscula.Python
title()Cada palabra inicia con mayúscula.Hola Mundo
swapcase()Invierte mayúsculas y minúsculas.pYTHON
casefold()Versión avanzada de lower().python

Alineación y relleno

Estos métodos ajustan el ancho de una cadena rellenando con espacios (o el carácter que indiques).

Python
codigo = "42"
print(codigo.zfill(5))
print("Python".ljust(12, "."))
print("Python".rjust(12, "."))
print("Python".center(12, "*"))
MétodoDescripción
zfill(n)Rellena con ceros a la izquierda hasta completar n caracteres.
ljust(n, c)Alinea a la izquierda y rellena a la derecha con el carácter c.
rjust(n, c)Alinea a la derecha y rellena a la izquierda con el carácter c.
center(n, c)Centra el texto rellenando ambos lados con el carácter c.
Uso recomendado

Muy útiles para alinear columnas en reportes de consola, o para construir códigos con ceros a la izquierda (como 00042).

Comprobaciones is...()

Estos métodos no transforman el string: devuelven True o False según el contenido de la cadena.

Python
print("12345".isdigit())
print("Python".isalpha())
print("Python3".isalnum())
print("   ".isspace())
print("Python 3".isalnum())
MétodoDevuelve True si...
isdigit()Todos los caracteres son dígitos.
isalpha()Todos los caracteres son letras.
isalnum()Todos los caracteres son letras o dígitos (sin espacios ni símbolos).
isspace()Todos los caracteres son espacios en blanco.
Uso recomendado

Muy usados para validar datos ingresados por el usuario, por ejemplo comprobar que una edad ingresada como texto realmente sea un número antes de convertirla con int().

Mini laboratorio

  1. Convierte tu nombre completo a mayúsculas.
  2. Convierte una dirección de correo a minúsculas.
  3. Escribe una oración y aplica capitalize().
  4. Escribe el nombre de tu universidad usando title().
  5. Experimenta con swapcase().
  6. Rellena el número "7" con ceros hasta que tenga 4 dígitos usando zfill().
  7. Comprueba con isdigit() si el texto "abc123" es completamente numérico.
Consejo

Prueba cada método utilizando diferentes palabras. Aprenderás mucho más experimentando que copiando ejemplos.

strip()

Elimina los espacios en blanco al inicio y al final de una cadena.

Python
texto = "     Python     "
print(texto.strip())
Muy utilizado

Ideal cuando se reciben datos desde un teclado o desde un archivo de texto.

lstrip() y rstrip()

Permiten eliminar espacios únicamente de un lado.

Python
texto = "     Python     "
print(texto.lstrip())
print(texto.rstrip())
MétodoElimina
lstrip()Espacios de la izquierda
rstrip()Espacios de la derecha

replace()

Reemplaza una parte del texto por otra.

Python
frase = "Me gusta Java"
print(frase.replace("Java","Python"))

split()

Divide una cadena en varias partes utilizando un separador.

Python
cadena = "Juan,Pedro,Ana,Luis"
lista = cadena.split(",")
print(lista)
Importante

El método devuelve una lista, no un string.

join()

Hace exactamente lo contrario que split().

Python
nombres = ["Juan","Pedro","Ana"]
texto = " - ".join(nombres)
print(texto)

find()

Busca una palabra dentro de otra cadena.

Python
texto = "Programación en Python"
print(texto.find("Python"))

Si encuentra el texto devuelve la posición donde comienza.

index()

Funciona parecido a find(), pero genera un error si no encuentra el texto.

Python
texto = "Python"
print(texto.index("t"))
Diferencia

find() devuelve -1 si no encuentra la cadena.

index() produce una excepción.

count()

Cuenta cuántas veces aparece un texto.

Python
texto = "banana"
print(texto.count("a"))

startswith()

Comprueba si una cadena comienza con determinado texto.

Python
archivo = "reporte.pdf"
print(archivo.startswith("rep"))

endswith()

Comprueba cómo termina una cadena.

Python
archivo = "reporte.pdf"
print(archivo.endswith(".pdf"))

Resumen de métodos

MétodoDescripción
strip()Elimina espacios al inicio y al final.
lstrip()Elimina espacios de la izquierda.
rstrip()Elimina espacios de la derecha.
replace()Reemplaza texto.
split()Divide una cadena.
join()Une varias cadenas.
find()Busca texto.
index()Busca texto y produce error si no existe.
count()Cuenta apariciones.
startswith()Verifica el inicio.
endswith()Verifica el final.

Mini laboratorio

  1. Elimina los espacios de tu nombre utilizando strip().
  2. Reemplaza tu apellido por otro usando replace().
  3. Divide una fecha (2026-07-10) utilizando split("-").
  4. Une una lista de palabras mediante join().
  5. Cuenta cuántas veces aparece la letra a en tu nombre.
  6. Comprueba si un archivo termina en .pdf.
  7. Comprueba si un correo comienza por "admin".
Actividad sugerida

Construye un programa que solicite el nombre completo de un estudiante, elimine los espacios sobrantes, convierta el texto a formato de título (title()) y muestre cuántos caracteres tiene el nombre utilizando len().

Caracteres especiales (Secuencias de escape)

Algunos caracteres no pueden escribirse directamente dentro de una cadena. Para ello Python utiliza las secuencias de escape, que comienzan con una barra invertida (\).

SecuenciaSignificadoEjemplo
\nNueva líneaHola
Mundo
\tTabulaciónNombre   Edad
\\Barra invertidaC:\Usuarios
\"Comilla doble"Python"
\'Comilla simpleIt's

Ejemplos de secuencias de escape

Python
print("Primera línea\nSegunda línea")
print("Nombre:\tJuan")
print("C:\\Usuarios\\Roy")
print("\"Python\"")

Strings de varias líneas

Las comillas triples permiten escribir bloques completos de texto respetando los saltos de línea.

Python
mensaje = """
Bienvenido al Sistema
Universidad Adventista de Bolivia
Ingeniería de Sistemas
"""
print(mensaje)

f-Strings (Python moderno)

Los f-Strings son la forma recomendada de insertar variables dentro de una cadena.

Sintaxis

Antepone la letra f a la cadena y coloca las variables entre llaves.

Python
nombre = "Roy"
edad = 30
print(f"Hola {nombre}")
print(f"Tienes {edad} años")

Expresiones dentro de un f-String

Dentro de las llaves puedes colocar operaciones y expresiones.

Python
a = 15
b = 7
print(f"La suma es {a+b}")
print(f"El doble es {a*2}")
print(f"La división es {a/b}")

format() y especificadores

Dentro de las llaves de un f-String puedes agregar :especificador para controlar decimales, ancho y alineación.

Python
promedio = 87.4567
print(f"Promedio: {promedio:.2f}")
print(f"{'Nombre':<10}|{'Edad':>5}")
print(f"{'Juan':<10}|{20:>5}")
print(f"{1234567:,}")
EspecificadorEfecto
:.2fRedondea a 2 decimales.
:<10Alinea a la izquierda en un ancho de 10.
:>5Alinea a la derecha en un ancho de 5.
:,Agrega comas como separador de miles.

f-Strings de depuración

Desde Python 3.8, agregar = después de una expresión imprime también su nombre, útil para depurar rápidamente sin escribir print("variable:", variable).

Python
nombre = "Roy"
edad = 30
print(f"{nombre=}")
print(f"{edad=}")
print(f"{edad*2=}")

Comparación de estilos

MétodoEjemplo
Concatenación"Hola " + nombre
format()"Hola {}".format(nombre)
%"Hola %s" % nombre
f-Stringf"Hola {nombre}"
Recomendación

Desde Python 3.6, los f-Strings son el método recomendado por ser más legibles y rápidos.

Ejemplo de aplicación

Python
nombre = "Juan"
carrera = "Ingeniería"
semestre = 2
promedio = 87.5
print(f"""
===== INFORMACIÓN DEL ESTUDIANTE =====
Nombre   : {nombre}
Carrera  : {carrera}
Semestre : {semestre}
Promedio : {promedio}
======================================
""")

Errores comunes

❌ Olvidar la letra f

Si escribes "Hola {nombre}" Python mostrará literalmente {nombre}.

❌ Llaves incorrectas

Los f-Strings utilizan { } no paréntesis.

❌ Variables inexistentes

Si la variable no existe se producirá un NameError.

Buenas prácticas

  • Utiliza nombres descriptivos para las variables.
  • Prefiere f-Strings antes que concatenaciones largas.
  • No abuses de las comillas triples para textos pequeños.
  • Utiliza strip() cuando recibas datos del usuario.
  • Convierte el texto con lower() o casefold() antes de comparar.
  • No modifiques directamente una cadena pensando que cambiará el original; recuerda que los strings son inmutables.

Reto

Escribe un programa que solicite:

  1. Nombre del estudiante.
  2. Carrera.
  3. Edad.
  4. Promedio.

Después muestra toda la información utilizando un único f-String con formato similar al siguiente:

Salida esperada
=================================
DATOS DEL ESTUDIANTE
Nombre    : Ana López
Carrera   : Ingeniería
Edad      : 20
Promedio  : 91.4
=================================
Python
nombre = "Ana López"
carrera = "Ingeniería"
edad = 20
promedio = 91.4
print(f"""=================================
DATOS DEL ESTUDIANTE
Nombre    : {nombre}
Carrera   : {carrera}
Edad      : {edad}
Promedio  : {promedio}
=================================""")

Ejercicios Propuestos

Pon en práctica lo aprendido resolviendo los siguientes ejercicios directamente en el bloque editable.

  1. Crea una variable con tu nombre y muéstralo en mayúsculas.
  2. Cuenta cuántas vocales a tiene tu nombre.
  3. Obtén las tres primeras letras de tu apellido.
  4. Invierte tu nombre utilizando slicing.
  5. Concatena nombre y apellido usando un f-String.
  6. Reemplaza todos los espacios de una frase por guiones.
  7. Verifica si un correo termina en .edu.
  8. Divide una fecha (2026-07-10) utilizando split().
  9. Une una lista de ciudades utilizando join().
  10. Construye una tarjeta de presentación utilizando f-Strings.
✍️ Resuelve aquí los ejercicios

Reto Final

Desarrolla un programa que solicite la siguiente información:

  • Nombre completo
  • Carrera
  • Edad
  • Correo electrónico
  • Ciudad

El programa deberá:

  • Eliminar espacios innecesarios.
  • Convertir el nombre a formato título.
  • Convertir el correo a minúsculas.
  • Mostrar el número de caracteres del nombre.
  • Mostrar una tarjeta utilizando f-Strings.

Cheat Sheet

MétodoDescripción
upper()Mayúsculas
lower()Minúsculas
capitalize()Primera letra
title()Cada palabra
strip()Quitar espacios
replace()Reemplazar texto
split()Separar cadena
join()Unir cadenas
find()Buscar texto
count()Contar ocurrencias
startswith()Verificar inicio
endswith()Verificar final
zfill() / ljust() / rjust() / center()Alinear y rellenar
isdigit() / isalpha() / isalnum()Validar contenido

¿Sabías que...?

💡 Los Strings son inmutables

Cuando modificas un string, Python crea uno nuevo.

🚀 f-Strings

Son la forma más rápida y legible de construir mensajes.

📖 Todo es un objeto

En Python, incluso las cadenas poseen métodos propios.