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:
texto = "hola mundo"
print(texto.upper()) # HOLA MUNDO
print(texto.lower()) # hola mundo
print(texto.capitalize()) # Hola mundo
print(texto.replace("mundo", "python")) # hola python
print(texto.split(" ")) # ['hola', 'mundo'] → una lista
print(len(texto)) # 10 → longitud (función, no método)
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