Contatti per un servizio di newsletterSviluppo e personalizzazione

Uno script Python che trasforma le esportazioni dei suoi contatti in un CSV pulito, pronto da importare nel suo servizio di newsletter

Di solito pronto in 15 minutiRevisioni incluseControllo di qualità
Pacchetti
Pagamento protettoDettagli
  • Le revisioni previste dal pacchetto sono gratuite.
  • Se non risponde entro 3 giorni dalla consegna, il lavoro viene accettato automaticamente.

Il denaro viene riservato al momento del pagamento e sbloccato solo quando accetta il lavoro.

Uno script Python che trasforma le esportazioni dei suoi contatti in un CSV pulito, pronto da importare nel suo servizio di newsletter

Esempio di risultato

Esempio per il pacchetto Standard

Unire i file mensili delle vendite di 9 negozi in un unico report Excel

Come si esegue

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Cartella: sales/2026-10, 9 file trovati
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 righe
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 righe
2026-11-02 09:14:04 WARN  shop-07.csv: saltate 3 righe senza prezzo (righe 88, 412, 913)
2026-11-02 09:14:05 INFO  Fatto: 10.412 righe -> report-2026-10.xlsx (fogli "Vendite" e "Totali")

Impostazioni, non codice

I nomi delle colonne di ogni negozio si trovano in settings.ini, quindi un nuovo negozio o una colonna rinominata è una riga lì:

[columns]
date = Data, Data vendita, Giorno
product = Prodotto, Articolo, Descrizione
quantity = Q.tà, Quantità, Pz
price = Prezzo, Prezzo unitario

Una parte del codice

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Legge il file di un negozio e gli dà i nomi di colonna del report."""
    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}: nessuna colonna per '{name}' (cercate: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

File: un archivio ZIP con merge_sales.py (310 righe), settings.ini, requirements.txt e un README su come installare Python, eseguire lo script e cosa significa ogni messaggio del registro. Il cliente lo esegue sul proprio computer.

Cliente: una piccola catena di 9 cartolerie; ogni negozio invia le vendite del mese in un file CSV o Excel, con nomi di colonna leggermente diversi. Compito: un unico script che legge tutti i file di una cartella, porta le colonne a una stessa forma e scrive un solo report Excel con tutte le vendite e un foglio di totali per negozio.

Il cliente e tutti i dati sono inventati.

Informazioni sul servizio

I contatti esportati da un negozio, da un CRM o dalle iscrizioni agli eventi raramente corrispondono a ciò che un servizio di newsletter vuole importare: altri nomi di colonna, nome e cognome nella stessa cella, tag in posti strani, persone disiscritte ancora in lista. Questo script Python legge le sue esportazioni e scrive un unico CSV pulito nella struttura di importazione del suo servizio: nomi separati se serve, campi e tag abbinati, email scritte male e duplicati esclusi e, dallo Standard, tenute solo le persone con il consenso e rimosse quelle disiscritte, con un file delle righe scartate da controllare. È per i suoi contatti che hanno accettato di ricevere le sue comunicazioni, mai per liste acquistate o raccolte dal web. Gira sul suo computer e non si collega al servizio; il file lo importa lei.

Cosa è incluso

  • Cosa riceveUn archivio ZIP con lo script Python, un README con le istruzioni passo passo e, dallo Standard, un file di impostazioni con l'abbinamento di campi e tag; il codice è visibile anche nella pagina dell'ordine.
  • La struttura del suo servizioSecondo il suo modello di importazione o un file di esempio
  • Consenso rispettatoDallo Standard, solo chi ha acconsentito, nessun disiscritto
  • Fuori duplicati e refusiIndirizzi scritti male e ripetizioni esclusi
  • Righe scartate conservateUn file separato che mostra cosa è stato escluso e perché
  • Codice leggibileCon commenti, facile aggiungere un campo in seguito

Come funziona

  1. 1
    EsempiLei invia righe inventate da ogni esportazione e il formato di importazione del suo servizio
  2. 2
    CodiceScriviamo lo script e la guida per eseguirlo
  3. 3
    Lo proviLo esegue, controlla le righe scartate e importa una piccola lista di prova
  4. 4
    ModificheChiede modifiche nei limiti del pacchetto e invia eventuali messaggi di errore

Cosa ci serve da lei

L'intestazione e 10-20 righe di ogni esportazione con nomi ed email inventati ma con la stessa struttura, quale colonna indica il consenso e quale la disiscrizione, il servizio di newsletter che usa e il suo modello di importazione o un link alla pagina di aiuto sull'importazione, e come impostare tag o segmenti. Come sono stati raccolti i contatti (il suo negozio, un modulo di iscrizione, eventi). Non invii mai la lista reale.

Le chiederemo:

  • Da dove vengono i contatti?
  • In quale servizio di newsletter li importerà?
  • Come è registrato il consenso?
  • Le servono tag o segmenti?

Confronto dei pacchetti

PacchettiBaseUn'esportazione, un formato15 €StandardEsportazione con impostazioni30 €PremiumStrumento contatti60 €
Tempi di consegna1 giorno2 giorni3 giorni
Revisioni123
Codicefino a 150 righefino a 400 righefino a 1.000 righe
File di codice1fino a 3fino a 8
File di impostazioniNoSìSì
Messaggi di errore chiari e un logNoSìSì
Opzioni di avvio e una guida per eseguirlo a orari programmatiNoNoSì
Guida all'installazione e all'avvio (README)SìSìSì
LinguaggioPythonPythonPython
Ordina BaseOrdina StandardOrdina Premium

Pagamento protetto

Paga al momento dell'ordine, ma il denaro viene sbloccato solo per un lavoro accettato.

  • Prezzo fissoIl prezzo del pacchetto non cambia dopo il pagamento.
  • Il denaro viene riservatoAl pagamento, l'importo viene solo riservato. Passa a Dleex quando accetta il lavoro.
  • Verificato prima della consegnaOgni risultato passa un controllo di qualità prima di arrivare a lei, e lo vede nella pagina dell'ordine prima di accettarlo.
  • Revisioni gratuiteRichieda revisioni nell'ambito del suo brief tante volte quante ne prevede il pacchetto.
  • Accettazione dopo 3 giorniSe entro 3 giorni dalla consegna non accetta il lavoro né richiede una revisione, il lavoro viene accettato automaticamente. Se scrive nella chat dell'ordine dopo la consegna, l'ordine resta in attesa; dopo la nostra risposta potremmo far ripartire i 3 giorni e glielo indicheremo nella chat.
  • Rifacimento o rimborso totaleSe il risultato non corrisponde al suo brief e le revisioni non hanno risolto il problema, oppure il lavoro richiede più del doppio dei tempi di consegna previsti, scriva nella chat dell'ordine: rifaremo il lavoro o le rimborseremo l'intero pagamento.
Come funziona →

Domande e risposte

Posso usarlo su una lista che ho comprato?

No. È per i suoi contatti che hanno accettato di ricevere le sue email. Le liste acquistate o raccolte dal web violano le regole dei servizi di newsletter e la legge di molti paesi.

Carica i contatti nel servizio?

No. Crea il file; lo importa lei nel suo account del servizio di newsletter, che le chiede anche di confermare che i contatti hanno dato il consenso.

Verificherà che le email esistano?

Verifica che ogni indirizzo sia scritto correttamente e segnala i refusi comuni nel dominio. Se una casella esiste lo sa solo il servizio di posta, e il suo servizio di newsletter segnala i rimbalzi dopo l'invio.

La mia lista contatti è al sicuro?

Resta sul suo computer: lo script lo esegue lei, e noi vediamo solo le righe inventate che ci invia.

Non hai trovato la risposta?

Pacchetti