Fatti: A. Nella primavera 2003 B._ e C._ hanno appaltato alla A._SA, sulla base di diverse offerte e modifiche scritte e verbali, le opere da capomastro per la ristrutturazione della loro casa sulla part. xxx di Gordola. Al termine dei lavori l'impresa appaltatrice ha emesso una fattura per un totale di fr. 132'752.30; dedotti gli acconti di fr. 50'000.-- rimaneva un saldo a suo favore di fr. 82'752.30. I committenti non l'hanno pagato. B. Con petizione del 9 settembre 2004 la A._SA ha convenuto in giudizio B._ e C._ davanti al Pretore di Locarno-Campagna, chiedendo in via principale che fossero condannati solidalmente a pagarle fr. 82'752.30, in via subordinata fr. 41'376.15 ciascuno. I convenuti hanno risposto di respingere interamente la petizione: obiettavano che la fatturazione andava eseguita sulla base di un'offerta diversa da quella considerata dall'attrice, che tra i lavori esposti a regia alcuni non erano stati ordinati e altri andavano fatturati a corpo e anche che l'opera fosse difettosa. C. Il Pretore ha accolto parzialmente la petizione con sentenza del 21 gennaio 2008, condannando solidalmente i convenuti a pagare all'attrice fr. 48'564.--. La seconda Camera civile del Tribunale d'appello ticinese, adita dai convenuti, ha praticamente sovvertito il giudizio del Pretore, riducendo il loro debito verso l'attrice a soli fr. 3'791.15 e riformando di conseguenza anche il giudizio su spese e ripetibili. D. L'attrice insorge davanti al Tribunale federale con ricorso in materia civile del 13 giugno 2009. Chiede in via principale la conferma della condanna pronunciata dal Pretore, in via subordinata che la causa sia rinviata al Tribunale d'appello per nuovo giudizio nei sensi dei considerandi. I convenuti hanno chiesto di respingere il ricorso e di confermare la sentenza del Tribunale d'appello con osservazioni del 10 settembre 2009. Questa autorità non ha presentato osservazioni.