Operaciones y Métodos de Cadenas en Python

Conceptos Básicos de Cadenas

En Python, las cadenas de caracteres (str) son secuencias inmutables que no pueden almacenarse ni transmitirse directamente sin conversión. Para manipular datos binarios, es necesario transformarlas a tipo bytes. Las cadenas en Python 3 se representan con codificación Unicode.

Las cadenas se definen entre comillas simples, dobles o triples, y no se distingue entre caracteres individuales y secuencias. Son objetos iterables e inmutables, lo que significa que cualquier modificación crea una nueva instancia en memoria.

Acceso y Segmentación

Para extraer subcadenas, se utilizan índices y operadores de segmentación. El primer carácter tiene índice 0, y el último tiene índice -1. La sintaxis es [inicio:fin:paso], donde el intervalo es cerrado por la izquierda y abierto por la derecha.


# Ejemplo de segmentación
cadena = "Python"
primer_caracter = cadena[0]  # 'P'
subcadena = cadena[1:4]      # 'yth'
paso_dos = cadena[::2]       # 'Pto'

Concatenación y Repetición

Se pueden unir cadenas con el operador + y repetirlas con *.


# Concatenación y repetición
parte1 = "Hola"
parte2 = "Mundo"
union = parte1 + " " + parte2  # 'Hola Mundo'
repeticion = parte1 * 2         # 'HolaHola'

Operadores y Funcionalidades

Los operadores comunes incluyen comparación (basada en valores ASCII), segmentación ([], [:], [::]) y pertenencia (in, not in).

Plantillas y Cadenas Crudas

El módulo string proporciona Template para reemplazos dinámicos. Las cadenas crudas (prefijo r) evitan el escape de caracteres especiales.


# Plantilla con Template
from string import Template
plantilla = Template("Saludos, ${nombre}!")
mensaje = plantilla.substitute(nombre="Ana")

# Cadena cruda
ruta = r"C:\document\archivo.txt"  # Sin interpretar escapes

Tipos de Cadenas

Python maneja tres tipos principales: cadenas normales (str), crudas (r'') y Unicode (u''). La clase base basestring engloba str y unicode.

Métodos Integrados de Cadenas

A continuación, se describen métodos clave organizados por categoría:

Propiedades y Búsqueda

  • es_alfanumerico(): Verifica si todos los caracteres son alfanuméricos.
  • buscar(sub): Devuelve el índice de la primera aparición de sub, o -1 si no se encuentra.
  • contar(sub): Cuenta las ocurrencias de sub en un rango dado.

# Ejemplo de búsqueda
texto = "programacion en python"
indice = texto.buscar("python")  # 14
ocurrencias = texto.contar("o")  # 3

Transformación y Formato

Métodos como minúsculas(), mayúsculas() y título() alteran el caso. La operación traducir() usa tablas de mapeo para reemplazos complejos.


# Traducción con maketrans y translate
tabla = str.maketrans("aeiou", "12345")
cadena_original = "ejemplo"
cadena_traducida = cadena_original.translate(tabla)  # '2j2mpl4'

División y Unión

Para dividir cadenas, se usan dividir(sep) y dividir_lineas(). La unión se logra con unir(secuencia).


# División y unión
lista = ["uno", "dos", "tres"]
separador = ", "
cadena_unida = separador.unir(lista)  # 'uno, dos, tres'

# División con split
datos = "10-20-30"
elementos = datos.dividir("-", maxsplit=1)  # ['10', '20-30']

Releno y Recorte

Métodos como centrar(ancho), rellenar_izquierda(ancho) y quitar_espacios() ajustan la presentación.


# Relleno y recorte
valor = "texto"
relleno = valor.centrar(20, '-')  # '-------texto--------'
sin_espacios = "  hola  ".quitar_espacios()  # 'hola'

Formato de Cadenas

Python ofrece dos estilos de formato: porcentaje (%) y método format(). Este último es más flexible y moderno.

Estilo porcentaje


# Formato con %
nombre = "Carlos"
edad = 30
mensaje = "Soy %s y tengo %d años" % (nombre, edad)

Estilo format()


# Formato con format()
salida = "Nombre: {}, Edad: {}".format("Luis", 25)
# Con especificadores
numero = 123.456
formateado = "{:.2f}".format(numero)  # '123.46'

Formato con F-strings (Python 3.6+)

Las f-strings permiten interpolación directa.


# F-string
nombre = "María"
mensaje_f = f"Hola, {nombre}!"  # 'Hola, María!'

Técnicas Avanzadas

Para revertir cadenas, se usa segmentación negativa: cadena[::-1]. La concatenación con unir() es más eficeinte que + para múltiples elementos. Para división en partes de longitud fija, se emplea re.findall(r'.{1,n}', cadena).


# Reversión y división en partes
original = "abcdefghi"
invertida = original[::-1]  # 'ihgfedcba'

import re
partes = re.findall(r'.{1,3}', "12345678")  # ['123', '456', '78']

El Módulo string

Proporciona constantes como letras_ascii, digitos y signos_puntuación para validación y manipulación.


# Uso del módulo string
import string
letras = string.ascii_letters  # Todas las letras ASCII
digitos = string.digits        # '0123456789'

Ejemplo de Lectura de CSV

Para leer archivos CSV de una carpeta, se puede iterar sobre los archivos con extensión .csv.


# Lectura de archivos CSV
import os
ruta_carpeta = "datos"
for archivo in os.listdir(ruta_carpeta):
    if archivo.endswith(".csv"):
        print(f"Archivo encontrado: {archivo}")

Etiquetas: Python cadenas-string operaciones-texto métodos-cadena formato-cadenas

Publicado el 6-20 21:10