Ho un problema per il confronto di due file. In sostanza, quello che voglio fare è un diff UNIX-like tra due file, ad esempio:Genera differenza "fuzzy" di due file in Python, con confronto approssimativo di float
$ diff -u destra-file-file di sinistra
Tuttavia i miei due file contengono galleggianti; e poiché questi file sono stati generati su architetture distinte (ma calcolano le stesse cose), i valori fluttuanti non sono esattamente gli stessi (possono essere diversi, ad esempio, 1e-10). Ma quello che cerco 'differenziando' i file è quello di trovare quelle che considero differenze significative (per esempio la differenza è maggiore di 1e-4); mentre utilizzo il comando UNIX diff, ottengo quasi tutte le mie righe contenenti i valori fluttuanti diversi! Questo è il mio problema: come posso ottenere un diff risultante come 'diff -u' fornisce, ma con meno restrizioni riguardo il confronto dei float?
Ho pensato di scrivere uno script di Python per farlo e ho scoperto il modulo difflib che fornisce un confronto simile a diff. Ma la documentazione che ho trovato spiega come usarlo così com'è (attraverso un singolo metodo) e spiega gli oggetti interni, ma non riesco a trovare nulla riguardo a come personalizzare un oggetto difflib per soddisfare le mie esigenze (come riscrivere solo il metodo di confronto o tale) ... Immagino che una soluzione potrebbe essere quella di recuperare la differenza unificata, e analizzarla 'manualmente' per rimuovere le mie differenze 'false', in quanto non è elegante; Preferirei usare la struttura già esistente.
Quindi, qualcuno sa come personalizzare questa libreria in modo da poter fare ciò che cerco? O almeno indicarmi la giusta direzione ... Se non in Python, forse uno script di shell potrebbe fare il lavoro?
Qualsiasi aiuto sarebbe molto apprezzato! Grazie in anticipo per le tue risposte!
Forse piace anche: [moduli Buono Python per confronto di stringhe sfocata ?] (http://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-string-comparison) – miku
un'alternativa più semplice sarebbe quella di pre-processare correttamente i file e i float con l'accuratezza desiderata –
Si prega di inviare un paio di righe corrispondenti da file di input di esempio? – smci