Guía defensiva
¿Cómo tratar registros duplicados con Python sin perder evidencia?
Dos líneas parecidas no demuestran que sean el mismo evento. Ejemplo resuelto: si una fuente documenta que origen más ID es único por ocurrencia, pares distintos son observaciones distintas y un par igual puede ser reenvío. Sin ese contrato, conserva hipótesis y originales.
Conserva original y procedencia
Guarda o referencia el registro original, su fuente y el momento de recepción antes de crear una vista resumida. Así se puede revisar si una repetición viene del sistema, de un reenvío o de una segunda lectura.
No uses sólo el texto como identidad. Dos operaciones legítimas pueden producir el mismo mensaje y una operación puede aparecer con formato distinto en dos fuentes.
Define una identidad proporcional
Usa origen más identificador sólo cuando la fuente documente que esa pareja es única por ocurrencia. Si no existe ese contrato, compara varios campos estables y marca el resultado como aproximación, no como deduplicación confirmada.
El procedimiento debe devolver evento distinto, posible repetición o dato insuficiente. Conservar el último caso evita que una limpieza silenciosa borre evidencia.
Distingue configuración y evento
Python entrega un LogRecord a manejadores del logger y, si se propaga, a manejadores de sus ancestros. Configurar manejadores en más de un punto puede emitir el mismo registro más de una vez.
Revisa nombre, manejadores y propagación antes de eliminar líneas. Si hay un problema de configuración, conserva una muestra y corrígelo de forma centralizada.
Conecta con la práctica
La lección gratuita de Python introduce tipos, condiciones y errores visibles. Es el puente para clasificar una entrada como comparable o insuficiente; no evalúa deduplicación ni logging.
Informa cuántos registros quedaron sin clasificar y por qué. No conviertas ese número en actividad real sin revisar la fuente.