Trabajo con strings en Python: guía completa
Fundamentos de las cadenas en Python
Los strings en Python son un tipo de dato fundamental para trabajar con información textual. Comprender cómo manejarlos es esencial para una programación eficiente.
Strings como objetos de tipo str
En Python, los strings son objetos del tipo incorporado str. Representan secuencias de caracteres Unicode. Cada string cuenta con múltiples métodos integrados para procesar texto. Puedes acceder a caracteres individuales mediante índices y realizar operaciones de comparación y ordenamiento.
texto = "Python"
print(type(texto)) # <class 'str'>
print(len(texto)) # 6
Principio de inmutabilidad de los strings
Los strings en Python son objetos inmutables. Esto significa que cualquier operación de transformación crea un nuevo string, dejando el original sin cambios. Este principio garantiza la seguridad de los datos y la previsibilidad del código.
original = "hola"
modificado = original.upper()
print(original) # 'hola' - no cambia
print(modificado) # 'HOLA' - nuevo string
Formas de crear strings
Python ofrece varias formas de crear strings:
- Comillas simples para cadenas sencillas
- Comillas dobles para cadenas con apóstrofes
- Comillas triples para texto multilínea
- Raw strings para evitar escapes de caracteres especiales
simple = 'cadena simple'
doble = "cadena con 'apóstrofe'"
multilinea = """Primera línea
Segunda línea
Tercera línea"""
raw = r"ruta\al\archivo"
Indexación y trabajo con slices
Acceso a caracteres del string
Cada carácter en un string tiene su propio índice. La indexación comienza en cero. Python admite tanto indexación positiva como negativa.
texto = "Python"
print(texto[0]) # 'P' - primer carácter
print(texto[5]) # 'n' - último carácter
print(texto[-1]) # 'n' - último con índice negativo
print(texto[-6]) # 'P' - primero con índice negativo
Creación de slices (rebanadas) de strings
Los slices permiten extraer subcadenas del string original. Sintaxis del slice: cadena[inicio:fin:paso]. El índice inicial se incluye, el final se excluye.
texto = "Python Programming"
print(texto[1:4]) # 'yth'
print(texto[:6]) # 'Python'
print(texto[7:]) # 'Programming'
print(texto[::2]) # 'Pto rgamn' - cada segundo carácter
print(texto[::-1]) # 'gnimmargorP nohtyP' - inversión del string
Aplicación práctica de la indexación negativa
La indexación negativa simplifica el trabajo con el final del string. Es especialmente útil al procesar archivos y datos de longitud variable.
archivo = "documento.pdf"
extension = archivo[-4:] # '.pdf'
nombre = archivo[:-4] # 'documento'
Métodos de búsqueda en strings
Métodos básicos de búsqueda de subcadenas
El método find() devuelve el índice de la primera aparición de una subcadena. Si no se encuentra, retorna -1. El método rfind() busca desde el final del string.
texto = "banana programación"
print(texto.find("ana")) # 1
print(texto.find("python")) # -1 (no encontrado)
print(texto.rfind("ana")) # 3
print(texto.find("a", 2)) # 3 (búsqueda desde la posición 2)
Métodos estrictos de búsqueda con excepciones
Los métodos index() y rindex() funcionan de manera similar a find(), pero lanzan una excepción ValueError si la subcadena no se encuentra.
texto = "banana"
print(texto.index("n")) # 2
# print(texto.index("z")) # ValueError: substring not found