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 desub, o -1 si no se encuentra.contar(sub): Cuenta las ocurrencias desuben 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}")