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.
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.
Al finalizar esta guía serás capaz de crear, acceder, modificar y manipular cadenas utilizando las principales herramientas que ofrece Python.
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.
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.
nombre = "Roy"
apellido = 'Carrasco'
universidad = "Universidad Adventista de Bolivia"
print(nombre)
print(apellido)
print(universidad)
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.
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.
frase = "Ella dijo 'Hola'"
respuesta = 'Él respondió "Adiós"'
print(frase)
print(respuesta)
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.
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.
nombre = ""
apellido = ''
print(nombre)
print(apellido)
Una cadena vacía tiene longitud cero, pero sigue siendo un objeto de tipo str.
Resumen
| Forma | Ejemplo | Uso 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.
Python numera cada carácter individualmente, incluyendo espacios.
| 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| P | y | t | h | o | n |
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 |
|---|---|---|---|---|---|
| P | y | t | h | o | n |
texto = "Python"
print(texto[-1])
print(texto[-2])
print(texto[-6])
Los índices negativos permiten acceder rápidamente al último elemento sin conocer la longitud del string.
Ejemplos prácticos
nombre = "Alejandro"
print(nombre[0])
print(nombre[3])
print(nombre[-1])
print(nombre[-3])
Salida:
A j o d
Los espacios también cuentan
Un error frecuente es pensar que los espacios no tienen posición.
frase = "Hola Mundo"
print(frase[4])
print(frase[5])
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.
texto = "Python"
print(texto[20])
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.
texto = "Python"
print(len(texto))
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.
- ¿Qué devuelve
texto[0]sitexto = "Programación"? - ¿Qué devuelve
texto[-1]? - ¿Cuál es el resultado de
len(texto)? - ¿Qué error produce
texto[50]?
texto = "Programación"
print(texto[0])
print(texto[-1])
print(len(texto))
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.
texto = "Python"
texto[0] = "J"
print(texto)
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:
texto = "Python"
nuevo = "J" + texto[1:]
print(nuevo)
print(texto)
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.
cadena[inicio:fin]
✔ Incluye el índice inicial.
✔ No incluye el índice final.
| 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| P | y | t | h | o | n |
texto = "Python"
print(texto[0:2])
print(texto[0:4])
print(texto[2:6])
Resultado del slicing
| Expresión | Resultado | Explicación |
|---|---|---|
texto[0:2] | Py | Posiciones 0 y 1 |
texto[0:4] | Pyth | Desde la primera hasta antes del índice 4 |
texto[2:6] | thon | Desde la letra "t" |
Omitiendo índices
Python permite omitir el índice inicial o final.
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]texto = "Programacion"
print(texto[::2])
print(texto[::3])
print(texto[::-1])
| Código | Resultado |
|---|---|
texto[::2] | Pormco |
texto[::3] | Pgmi |
texto[::-1] | noicamargorP |
Concatenación
Concatenar significa unir dos o más cadenas utilizando el operador +.
nombre = "Roy"
apellido = "Carrasco"
completo = nombre + " " + apellido
print(completo)
Repetición
El operador * permite repetir un string varias veces.
print("*" * 30)
print("Python " * 5)
print("-" * 50)
Ejemplo práctico
titulo = " SISTEMA DE VENTAS "
print("=" * 40)
print(titulo)
print("=" * 40)
Mini laboratorio
- Extrae las cuatro primeras letras de "Universidad".
- Obtén únicamente las tres últimas letras.
- Invierte la palabra "Python".
- Concatena tu nombre y apellido.
- Imprime una línea de 60 signos "=".
- Crea un encabezado usando repetición.
¿Puedes escribir un programa que imprima una tarjeta como esta? Pruébalo en el bloque de abajo.
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.
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.
texto = "Python"
print(texto.upper())
Muy útil para realizar comparaciones de texto ignorando diferencias entre mayúsculas y minúsculas.
lower()
Convierte todos los caracteres a minúsculas.
correo = "[email protected]"
print(correo.lower())
capitalize()
Convierte únicamente la primera letra en mayúscula.
texto = "python es divertido"
print(texto.capitalize())
title()
Convierte la primera letra de cada palabra en mayúscula.
nombre = "universidad adventista de bolivia"
print(nombre.title())
swapcase()
Invierte mayúsculas por minúsculas y viceversa.
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.
texto = "PYTHON"
print(texto.casefold())
Cuando necesites comparar cadenas sin importar mayúsculas, minúsculas o ciertas diferencias de idioma.
Resumen de métodos vistos
| Método | Descripción | Ejemplo |
|---|---|---|
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).
codigo = "42"
print(codigo.zfill(5))
print("Python".ljust(12, "."))
print("Python".rjust(12, "."))
print("Python".center(12, "*"))
| Método | Descripció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. |
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.
print("12345".isdigit())
print("Python".isalpha())
print("Python3".isalnum())
print(" ".isspace())
print("Python 3".isalnum())
| Método | Devuelve 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. |
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
- Convierte tu nombre completo a mayúsculas.
- Convierte una dirección de correo a minúsculas.
- Escribe una oración y aplica
capitalize(). - Escribe el nombre de tu universidad usando
title(). - Experimenta con
swapcase(). - Rellena el número "7" con ceros hasta que tenga 4 dígitos usando
zfill(). - Comprueba con
isdigit()si el texto "abc123" es completamente numérico.
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.
texto = " Python "
print(texto.strip())
Ideal cuando se reciben datos desde un teclado o desde un archivo de texto.
lstrip() y rstrip()
Permiten eliminar espacios únicamente de un lado.
texto = " Python "
print(texto.lstrip())
print(texto.rstrip())
| Método | Elimina |
|---|---|
lstrip() | Espacios de la izquierda |
rstrip() | Espacios de la derecha |
replace()
Reemplaza una parte del texto por otra.
frase = "Me gusta Java"
print(frase.replace("Java","Python"))
split()
Divide una cadena en varias partes utilizando un separador.
cadena = "Juan,Pedro,Ana,Luis"
lista = cadena.split(",")
print(lista)
El método devuelve una lista, no un string.
join()
Hace exactamente lo contrario que split().
nombres = ["Juan","Pedro","Ana"]
texto = " - ".join(nombres)
print(texto)
find()
Busca una palabra dentro de otra cadena.
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.
texto = "Python"
print(texto.index("t"))
find() devuelve -1 si no encuentra la cadena.
index() produce una excepción.
count()
Cuenta cuántas veces aparece un texto.
texto = "banana"
print(texto.count("a"))
startswith()
Comprueba si una cadena comienza con determinado texto.
archivo = "reporte.pdf"
print(archivo.startswith("rep"))
endswith()
Comprueba cómo termina una cadena.
archivo = "reporte.pdf"
print(archivo.endswith(".pdf"))
Resumen de métodos
| Método | Descripció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
- Elimina los espacios de tu nombre utilizando
strip(). - Reemplaza tu apellido por otro usando
replace(). - Divide una fecha (
2026-07-10) utilizandosplit("-"). - Une una lista de palabras mediante
join(). - Cuenta cuántas veces aparece la letra a en tu nombre.
- Comprueba si un archivo termina en .pdf.
- Comprueba si un correo comienza por "admin".
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 (\).
| Secuencia | Significado | Ejemplo |
|---|---|---|
\n | Nueva línea | Hola Mundo |
\t | Tabulación | Nombre Edad |
\\ | Barra invertida | C:\Usuarios |
\" | Comilla doble | "Python" |
\' | Comilla simple | It's |
Ejemplos de secuencias de escape
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.
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.
Antepone la letra f a la cadena y coloca las variables entre llaves.
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.
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.
promedio = 87.4567
print(f"Promedio: {promedio:.2f}")
print(f"{'Nombre':<10}|{'Edad':>5}")
print(f"{'Juan':<10}|{20:>5}")
print(f"{1234567:,}")
| Especificador | Efecto |
|---|---|
:.2f | Redondea a 2 decimales. |
:<10 | Alinea a la izquierda en un ancho de 10. |
:>5 | Alinea 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).
nombre = "Roy"
edad = 30
print(f"{nombre=}")
print(f"{edad=}")
print(f"{edad*2=}")
Comparación de estilos
| Método | Ejemplo |
|---|---|
| Concatenación | "Hola " + nombre |
| format() | "Hola {}".format(nombre) |
| % | "Hola %s" % nombre |
| f-String | f"Hola {nombre}" |
Desde Python 3.6, los f-Strings son el método recomendado por ser más legibles y rápidos.
Ejemplo de aplicación
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()ocasefold()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:
- Nombre del estudiante.
- Carrera.
- Edad.
- Promedio.
Después muestra toda la información utilizando un único f-String con formato similar al siguiente:
================================= DATOS DEL ESTUDIANTE Nombre : Ana López Carrera : Ingeniería Edad : 20 Promedio : 91.4 =================================
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.
- Crea una variable con tu nombre y muéstralo en mayúsculas.
- Cuenta cuántas vocales a tiene tu nombre.
- Obtén las tres primeras letras de tu apellido.
- Invierte tu nombre utilizando slicing.
- Concatena nombre y apellido usando un f-String.
- Reemplaza todos los espacios de una frase por guiones.
- Verifica si un correo termina en
.edu. - Divide una fecha (
2026-07-10) utilizandosplit(). - Une una lista de ciudades utilizando
join(). - Construye una tarjeta de presentación utilizando f-Strings.
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étodo | Descripció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.