Un string (str) es una secuencia de caracteres. En Python se escribe entre comillas simples o dobles — las dos son equivalentes:
saludo = "hola"
despedida = 'chao'
cita = "Ella dijo 'hola'" # comillas simples dentro de dobles
Indexación: cada carácter tiene posición
Los índices empiezan en 0:
palabra = "python"
# 012345 ← posición de cada letra
print(palabra[0]) # p
print(palabra[5]) # n
print(palabra[-1]) # n → los negativos cuentan desde el final
print(palabra[-2]) # o
Si te pasas del rango, obtienes un error:
palabra[99] # IndexError: fuera de rango
Slicing: cortar pedazos
La sintaxis [inicio:fin] extrae un rango — el fin no se incluye:
palabra = "programacion"
print(palabra[0:6]) # progra → posiciones 0 a 5
print(palabra[:6]) # progra → si omites el inicio, arranca en 0
print(palabra[6:]) # acion → hasta el final
print(palabra[-4:]) # cion → últimos 4 caracteres
Métodos de strings
Los strings vienen con utilidades incorporadas para transformar, limpiar, inspeccionar y estructurar texto.
1. Transformación de mayúsculas y minúsculas
texto = "hola mundo"
print(texto.upper()) # "HOLA MUNDO" → todo a mayúsculas
print(texto.lower()) # "hola mundo" → todo a minúsculas
print(texto.capitalize()) # "Hola mundo" → solo la primera letra en mayúscula
print(texto.title()) # "Hola Mundo" → primera letra de cada palabra
print(texto.swapcase()) # "HOLA MUNDO" invierte caja
2. Limpieza de espacios y caracteres (strip)
sucio = " bienvenido a Python \n"
print(sucio.strip()) # "bienvenido a Python" (limpia ambos lados)
print(sucio.lstrip()) # limpia solo a la izquierda
print(sucio.rstrip()) # limpia solo a la derecha
print("###alerta###".strip("#")) # "alerta" (elimina caracteres específicos)
3. Búsqueda y conteo
frase = "aprendiendo python con python"
print(frase.count("python")) # 2 → cuenta cuántas veces aparece
print(frase.find("python")) # 12 → índice de la primera coincidencia (-1 si no existe)
print(frase.rfind("python")) # 23 → índice de la última coincidencia
print(frase.index("python")) # 12 → igual que find, pero lanza ValueError si no existe
4. Reemplazo y partición (split, join, replace)
# replace: sustituye subcadenas
mensaje = "Me gusta Java".replace("Java", "Python")
print(mensaje) # "Me gusta Python"
# split: divide un string en una lista según un delimitador
csv = "ana,pedro,carlos,luis"
nombres = csv.split(",")
print(nombres) # ['ana', 'pedro', 'carlos', 'luis']
# join: une los elementos de una lista con un separador (¡el método pertenece al separador!)
unido = " - ".join(nombres)
print(unido) # "ana - pedro - carlos - luis"
5. Validación y comprobación de contenido (devuelven bool)
print("python.py".startswith("py")) # True → empieza por el prefijo
print("archivo.pdf".endswith(".pdf")) # True → termina con el sufijo
print("12345".isdigit()) # True → solo dígitos numéricos
print("Python".isalpha()) # True → solo caracteres alfabéticos
print("user_123".isalnum()) # False (el guion bajo no es alfanumérico)
print(" ".isspace()) # True → solo espacios en blanco
Ojo: los strings son inmutables. Los métodos no modifican el original, devuelven uno nuevo:
texto = "hola"
texto.upper() # Esto NO cambia texto
print(texto) # hola
texto = texto.upper() # Así sí: reasignas el resultado
print(texto) # HOLA
f-strings: el formato moderno
Pon una f antes de las comillas y podrás insertar expresiones entre llaves:
nombre = "Ana"
edad = 25
print(f"Me llamo {nombre} y tengo {edad} años")
# Me llamo Ana y tengo 25 años
print(f"En 5 años tendré {edad + 5}")
# En 5 años tendré 30
pi = 3.14159265
print(f"Pi con 2 decimales: {pi:.2f}")
# Pi con 2 decimales: 3.14
Las f-strings son la forma recomendada de formatear texto en Python moderno. Olvídate de concatenar con + por todas partes.
Errores comunes
"2" + 2 # TypeError: no puedes sumar str + int
int("hola") # ValueError: "hola" no es un número
"Hola"[5] # IndexError: fuera de rango
Resumen
- Los índices empiezan en 0; los negativos cuentan desde el final
[inicio:fin]corta sin incluir el fin- Los strings son inmutables: los métodos devuelven strings nuevos
- Las f-strings (
f"...{variable}...") son la forma moderna de formatear len()mide la longitud de cualquier string