DesarrolloProtección de pagoDetalles
- Los cambios dentro del paquete son gratuitos.
- Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.
El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Ejemplo de resultado
Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel
Cómo se ejecuta
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)
Configuración, no código
Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:
[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario
Una parte del código
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Lee el archivo de una tienda y le da los nombres de columna del informe."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.
Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.
El cliente y todos los datos son ficticios.
Acerca de este servicio
Una lista de contactos reunida durante años desde una tienda, un CRM y hojas de cálculo acaba con la misma persona tres veces, teléfonos escritos de cinco formas y correos con espacios o erratas. Este script de Python limpia su propia lista en su ordenador: quita espacios, corrige mayúsculas, escribe los teléfonos en un solo formato, marca los correos con formato incorrecto y encuentra duplicados por correo o teléfono; después guarda un archivo limpio y otro aparte con lo que ha quitado, para que usted lo revise. Envíenos unas filas con nombres, teléfonos y correos inventados que se parezcan a los suyos, y sus reglas. La lista nunca nos llega, y el script nunca envía nada a ningún sitio. Comprueba el formato de una dirección, no si el buzón existe.
Qué incluye
- Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con sus reglas de limpieza; el código también se muestra en la página del pedido.
- Duplicados localizadosPor correo, por teléfono o por ambos
- Un formato de teléfonoCon el prefijo de país que fije para los números que no lo tengan
- Filas eliminadas guardadasUn archivo aparte con cada fila eliminada o fusionada
- Se queda en su ordenadorSu lista nunca se sube ni se envía
- Código legibleCon comentarios, fácil cambiar una regla más adelante
Cómo funciona
- 1NormasUsted envía filas de muestra inventadas y sus reglas para los duplicados
- 2CódigoEscribimos el script y la guía para ejecutarlo
- 3PruébeloLo ejecuta con una copia de su lista y revisa las filas eliminadas
- 4CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error
Qué necesitamos de usted
Los nombres de columna de su lista y 10-20 filas con nombres, teléfonos y correos inventados, escritos como aparecen en sus datos reales (con el mismo tipo de desorden). Sus reglas: qué cuenta como duplicado, qué fila conservar (la más reciente, la más completa), el prefijo de país para los teléfonos locales y cómo deben escribirse los teléfonos. CSV o Excel, y su sistema: Windows, macOS o Linux. No envíe nunca la lista real.
Le preguntaremos:
- ¿De dónde sale la lista?
- ¿Qué cuenta como duplicado?
- ¿Qué fila debe quedarse?
- ¿Cómo deben ser los teléfonos?
Comparar paquetes
| Paquetes | BásicoLimpieza básica16 US$ | EstándarLimpieza con reglas33 US$ | PremiumHerramienta de limpieza67 US$ |
|---|---|---|---|
| Plazo | 1 día | 2 días | 3 días |
| Cambios | 1 | 2 | 3 |
| Código | hasta 150 líneas | hasta 400 líneas | hasta 1.000 líneas |
| Archivos de código | 1 | hasta 3 | hasta 8 |
| Archivo de configuración | No | Sí | Sí |
| Mensajes de error claros y registro | No | Sí | Sí |
| Opciones de ejecución y guía para ejecutarlo de forma programada | No | No | Sí |
| Guía de instalación y uso (README) | Sí | Sí | Sí |
| Lenguaje | Python | Python | Python |
| Hacer pedido Básico | Hacer pedido Estándar | Hacer pedido Premium |
Protección de pago
Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.
- Precio fijoEl precio del paquete no cambia después del pago.
- El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
- Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
- Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
- Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
- Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Preguntas y respuestas
¿Puede decirme qué correos ya no existen?
No. Comprueba que una dirección está bien escrita (una @, un dominio, sin espacios) y marca erratas habituales en el dominio. Si un buzón existe solo lo sabe el servicio de correo, y comprobarlo no forma parte de esta oferta.
¿Puede detectar que Juan García y J. García son la misma persona?
En Premium marca esos casi duplicados para que usted decida, en lugar de fusionarlos por su cuenta, porque los nombres por sí solos no son fiables. Los duplicados exactos por correo o teléfono se fusionan según sus reglas.
¿Está segura mi lista de contactos?
Nunca sale de su ordenador: usted ejecuta el script, su código no tiene acceso a internet y nosotros solo vemos las filas inventadas que nos envía. Guarde la lista y su copia limpia con la misma seguridad que antes.
¿Puede añadir contactos o encontrar correos que faltan?
No. Solo ordena los contactos que ya tiene. No busca a nadie ni recoge datos nuevos.
¿No encontró su respuesta?


