Manipulación y Formateo de Cadenas de Texto en Python

Caracteres de Escape en Cadenas de Texto

En Python, los caracteres de escape permiten insertar caracteres especiales o de control dentro de una cadena de texto utilizando la barra invertida (\). Esta funcionalidad es esencial para incluir comillas internas, saltos de línea, tabulaciones o representar la propia barra invertida.

Los caracteres de escape más comunes incluyen:

  • \n: Salto de línea.
  • \t: Tabulación horizontal.
  • \r: Retorno de carro.
  • \\: Barra invertida literal.
  • \' y \": Comillas simples y dobles literales.

Uso práctico de caracteres de escape

# Salto de línea y tabulación
mensaje = "Informe de ventas:\n\tQ1: $5000\n\tQ2: $7500"
print(mensaje)

# Inclusión de comillas y barras invertidas en rutas de Windows
ruta_archivo = "C:\\Usuarios\\Admin\\Documentos\\reporte.txt"
cita = "El autor afirmó: \"El código es poesía\"."
print(ruta_archivo)
print(cita)

Formateo de Cadenas

Python ofrece múltiples mecanismos para insertar variables y expresiones dentro de cadenas de texto. Aunque el operador % es el método clásico, las f-strings y el método .format() son los enfoques modernos y recomendados.

Operador de formato clásico (%)

producto = "Monitor"
unidades = 15
precio_unitario = 249.99

# %s para cadenas, %d para enteros, %f para flotantes
resumen = "Producto: %s | Stock: %d | Precio: %8.2f USD" % (producto, unidades, precio_unitario)
print(resumen)

F-strings (Cadenas formateadas literalse)

Introducidas en Python 3.6, las f-strings permiten evaluar expresiones directamente dentro de la cadena, ofreciendo una sintaxis más limpia y un mejor rendimiento.

cliente = "Empresa Tech"
factura = 1045
total = 15320.50

# Uso de f-strings con formato numérico y cálculos inline
detalle = f"Cliente: {cliente} - Factura #{factura} - Total con IVA: {total * 1.16:,.2f}"
print(detalle)

Indexación y Segmentación (Slicing)

Las cadenas en Python son secuencias inmutables, lo que significa que sus elementos pueden acccederse mediante índices. La indexación positiva comienza en 0, mientras que la negativa comienza en -1 (desde el final).

Extracción de caracteres y subcadenas

lenguaje = "JavaScript"

# Indexación
print(lenguaje[0])    # 'J' (Primer carácter)
print(lenguaje[-1])   # 't' (Último carácter)

# Segmentación [inicio:fin:paso]
print(lenguaje[0:4])  # 'Java' (Índices 0, 1, 2, 3)
print(lenguaje[4:])   # 'Script' (Desde el índice 4 hasta el final)
print(lenguaje[::2])  # 'JvSrp' (Caracteres en índices pares)
print(lenguaje[::-1]) # 'tpircSavaJ' (Inversión de la cadena)

Concatenación, Longitud y Membresía

La unión de cadenas se realiza mediante el operador +. Para medir la extensión de una cadena se utiliza la función integrada len(), y para verificar la existencia de subcadenas se emplea el operador in.

# Concatenación y longitud
nombre = "Ada"
apellido = "Lovelace"
nombre_completo = nombre + " " + apellido
print(f"Longitud del nombre completo: {len(nombre_completo)} caracteres")

# Operador de membresía
frase = "La inteligencia artificial está transformando el mundo"
print("artificial" in frase)  # True
print("cuántica" in frase)    # False

Entrada y Salida de Datos

La interacción básica con el usuario en la terminal se gestiona mediante input() para capturar datos (siempre como cadenas) y print() para mostrarlos.

# Captura de datos
usuario = input("Ingrese su nombre de usuario: ")
edad_texto = input("Ingrese su edad: ")

# Salida formateada
print(f"Bienvenido al sistema, {usuario}.")
print("Edad registrada:", edad_texto)

Métodos Integrados para Cadenas

Python proporciona una amplia biblioteca de métodos nativos para manipular, buscar y validar cadenas de texto sin necesidad de importar módulos externos.

Método Descripción Método Decsripción
upper() / lower() Convierte a mayúsculas / minúsculas strip() Elimina espacios en blanco en los extremos
capitalize() Mayúscula en la primera letra split() Divide la cadena en una lista
title() Mayúscula en cada palabra join() Une una lista de cadenas
startswith() Verifica el prefijo replace() Sustituye subcadenas
endswith() Verifica el sufijo find() / index() Busca la posición de una subcadena
isdigit() Valida si son solo dígitos count() Cuenta ocurrencias de una subcadena

Aplicación de métodos nativos

texto_base = "   análisis de datos con Python   "

# Limpieza y transformación
texto_limpio = texto_base.strip()
print(texto_limpio.title())  # 'Análisis De Datos Con Python'

# Validación y búsqueda
codigo = "PY-8842-X"
print(codigo.startswith("PY"))  # True
print(codigo.find("8842"))      # 3

# División y unión
csv_linea = "id,timestamp,valor"
columnas = csv_linea.split(",")
print(columnas)  # ['id', 'timestamp', 'valor']

nueva_linea = " | ".join(columnas)
print(nueva_linea)  # 'id | timestamp | valor'

# Reemplazo y conteo
log = "ERROR: Conexión fallida. ERROR: Timeout. INFO: Reiniciando."
print(log.count("ERROR"))                       # 2
print(log.replace("ERROR", "WARNING", 1))       # Reemplaza solo la primera ocurrencia

Conversión de Tipos (Casting)

Dado que input() siempre retorna cadenas, es fundamental convertir los datos a tipos numéricos para realizar operaciones matemáticas. Python requiere conversiones explícitas utilizando int(), float() y str().

# Conversión de entero a cadena
puntuacion = 9500
mensaje_puntaje = "Tu puntuación es: " + str(puntuacion)
print(mensaje_puntaje)

# Conversión de cadena a numérico
precio_texto = "149.95"
# int(precio_texto) lanzaría un ValueError, por lo que se usa float primero
precio_float = float(precio_texto)
precio_entero = int(precio_float)  # Trunca los decimales
print(f"Precio original: {precio_float}, Precio truncado: {precio_entero}")

Etiquetas: Python Strings f-strings Slicing Type Casting

Publicado el 8-27 19:01