La manipulación de secuencias de caracteres es una tarea fundamental en Python. A continuación, se detallan los métodos más utilizados para la búsqueda, transformación y validación de cadenas de texto.
Búsqueda y Conteo
Para localizar subcadenas dentro de un texto principal, se pueden emplear varios métodos. La función find() devuelve el índice inicial de la primera ocurrencia, o -1 si no existe. Por su parte, index() realiza la misma operación pero lanza una excepción ValueError cuando la subcadena no se encuentra. Ambos permiten acotar la búsqueda mediante parámetros de inicio y fin.
texto = "Programación en Python"
inicio = texto.find("Python", 0, len(texto))
# Para buscar desde el final, se puede usar rfind() o rindex()
# rfind() retorna -1 si falla, rindex() lanza un error
Para saber cuántas veces aparece un patrón, se utiliza count(), que también admite límites de búsqueda.
contador = texto.count("n")
Segmentación y Unión
El método split() divide la cadena utilizando un separador específico. Si no se proporciona ninguno, por defecto separa por espacios, tabulaciones y saltos de línea consecutivos. partition() divide el texto en tres partes: antes del separador, el separador mismo y el resto. splitlines() está diseñado para cortar el texto en cada salto de línea.
datos = "Python,Java;C++"
partes = datos.split(",")
# Usar join() para reconstruir o unir elementos
unido = "-".join(partes)
Para reemplazar fragmentos, replace() toma dos argumentos (el texto original y el nuevo), y opcionalmente un tercero para limitar el número de sustituciones.
nuevo_texto = texto.replace("Python", "C#", 1)
Transformación de Mayúsculas y Minúsculas
Se puede normalizar el formato del texto con upper() para convertir todo a mayúsculas y lower() para minúsculas. Para capitalizar únicamente la primera letra de la frase se usa capitalize(), mientras que title() pone en mayúscula la inicial de cada palabra.
minusculas = texto.lower()
mayusculas = texto.upper()
Alineación y Limpieza de Espacios
Los caracteres en blanco sobrantes se eliminan con strip() (ambos extremos), lstrip() (izquierda) y rstrip() (derecha). Para alinear el contenido dentro de una longitud fija, se aplican ljust(), rjust() y center(), que rellenan con espaicos u otros caracteres.
sin_espacios = " datos ".strip()
centrado = texto.center(30, "*")
Validación de Contenido
Existen múltiples funciones que retornan valores booleanos para verificar el tipo de contenido. startswith() y endswith() comprueban los prefijos y sufijos. isalpha() valida si solo hay letras, isdigit() si son números, isalnum() si es alfanumérico, e isspace() si está compuesto completamente por espacios.
es_alfa = texto.isalpha()
empieza_con = texto.startswith("Pro")
Ejemplo Práctico: Extracción de Subcadenas
Supongamos que tenemos una cadena con múltiples tipos de separadores (espacios, tabulaciones \t y saltos de línea \n) y necesitamos extraer la penúltima palabra.
frase_cruda = "manzana pera \t uva \n sandia melon"
Un error común es intentar forzar un separador compuesto como split("\t\n"), lo cual no funcionará porque buscará esa secunecia exacta. En cambio, invocar el método split() sin argumentos agrupa automáticamente cualquier carácter de espacio en blanco como delimitador único.
frase_cruda = "manzana pera \t uva \n sandia melon"
tokens = frase_cruda.split()
# Se accede al penúltimo elemento usando índices negativos
resultado = tokens[-2]
print(resultado) # Salida esperada: sandia