Las cadenas (strings) son una de las estructuras de datos más utilizadas en Python. Representan texto y aparecen en prácticamente todos los programas, desde mensajes simples hasta el procesamiento complejo de datos. En esta guía completa, aprenderá todo sobre la manipulación, el formato y las operaciones con cadenas en Python.

Una cadena es una secuencia de caracteres delimitada por comillas simples ('), dobles (") o triples (''' o """). En Python, las cadenas son inmutables, lo que significa que una vez creadas, no se pueden modificar, solo reemplazar.

## Diferentes formas de crear cadenas
nombre = 'Ana Silva'
mensaje = "¡Bienvenido al Universo Python!"
descripcion = """Este es un texto
con múltiples líneas
preservando los saltos"""

Indexación y Slicing

Las cadenas en Python se indexan como listas, lo que permite el acceso individual a los caracteres:

lenguaje = "Python"

## Acceder al primer carácter (índice 0)
print(lenguaje[0])  # P

## Slicing
print(lenguaje[0:3])   # Pyt
print(lenguaje[::-1])  # nohtyP (invertir cadena)

Métodos Esenciales de String

Python proporciona numerosos métodos para transformar y analizar texto:

  • upper() y lower(): Transformación de mayúsculas/minúsculas.
  • strip(): Eliminar espacios en blanco al principio y al final.
  • replace(): Sustitución de subcadenas.
  • split() y join(): División y combinación de cadenas.

🎨 Formato de Cadenas con F-strings

Las f-strings son la forma más moderna y legible de formatear cadenas en Python (introducidas en Python 3.6):

nombre = "Ana"
edad = 28
print(f"¡Hola, {nombre}! Tienes {edad} años.")

Unicode, Inmutabilidad y Concatenación Eficiente

Las cadenas de Python son secuencias Unicode inmutables. Métodos como replace() y upper() devuelven un nuevo valor y no cambian el original. Normalice el texto antes de comparar cuando los acentos o diferentes representaciones Unicode sean relevantes, y utilice casefold() para comparaciones sin distinguir mayúsculas.

import unicodedata

respuesta = unicodedata.normalize("NFC", input("Respuesta: ").strip())
if respuesta.casefold() == "python".casefold():
    print("Correcto")

Para unir muchos fragmentos, guárdelos en una lista y use "".join(partes) en lugar de aplicar += repetidamente dentro de un bucle. Use f-strings para interpolación legible, pero no para construir SQL; envíe parámetros mediante el driver. Distinga también texto y bytes: decodifique con una codificación explícita y convierta a bytes solo en los límites del sistema.

Práctica: Crear un Resumen de Texto

Cree una función que reciba un párrafo, elimine espacios externos, cuente palabras, encuentre la palabra normalizada más frecuente y produzca un resumen de dos líneas. Pruebe texto vacío, palabras con acentos, puntuación y espacios repetidos.

Conclusión

Dominar las cadenas es fundamental para cualquier desarrollador de Python. Para un procesamiento de texto más avanzado, consulte nuestras guías sobre Regex en Python y Manipulación de Archivos. Siempre consulte la documentación oficial de Python sobre strings para obtener más detalles.