Open gbvitrano opened 2 years ago
Risolto, EmEditor genera un rapporto di confronto tra due file e mette in evidenza le differenze
Risolto, EmEditor genera un rapporto di confronto tra due file e mette in evidenza le differenze
cosa è EmEditor? 🤣🤣
Questa domanda merita risposte migliori ;)
Nei prossimi giorni, ne do una mia.
Grazie, resto in attesa 😊😊
Grazie, resto in attesa 😊😊
Puoi anche iniziare a pubblicare la prima versione della ricetta, con EmEditor e poi si integra
@gbvitrano please, come dice il galateo, alleghiamo sempre un paio di file di esempio. Perché ora li devo creare io :)
Mille mila modi. Il comando base, a riga di comando è diff
.
Immaginiamo che i file di input siano questi due
id,name
1,Andrea
2,Marco
3,Luigia
id,name
1,Andrea
3,Luigia
Con diff input_01.csv input_02.csv
hai subito l'indicazione di cosa è cambiato.
In side by side è così
Se vuoi tutte linee di un file, non presenti in un altro
Con tutti i tips & tricks di diff puoi fare la guerra e online ci sono centinaia di guide.
diff
confronta stringhe di testo. Quindi non conta il formato, quindi lo puoi usare per tutto ciò che è archiviato come stringa.
Uno strumento che invece tiene conto del formato (format aware) è il mitico daff. Che di base sembra simile, però già con il comando di base, anche da shell è più "parlante"
Ma lo spettacolo è appena inizi ad avere file "veri", con differenze "vere" da mappare e vedere.
Bello l'output in HTML
daff --output index.html input.csv output.csv
In cui hai nota visiva di righe rimosse, colonne rimosse, celle editate, ecc.
Poi se hai una o piò colonne di JOIN, per vedere cosa rimane fuori dopo il JOIN, puoi usare SQL, Miller, Visidata, ecc.
Via GUI, ci sono utility specializzate per fare differenze tra testi. Io su win consiglio l'ottimo winmerge.
Alternativa con pandas, e gli stessi dati gentilmente forniti da @aborruso !
import pandas as pd
def show_diff(df1, df2):
"""
Mostra le differenze tra due DataFrames
"""
diff = pd.concat([df1, df2]).drop_duplicates(keep=False)
return diff
# Selezioniamo i file da confrontare
csv1 = pd.read_csv('csv1.csv')
csv2 = pd.read_csv('csv2.csv')
# Chiamiamo la funzione e stampiamo l'output
diff = show_diff(csv1, csv2)
print(diff)
Output:
id name
1 2 Marco
Praticamente fa un concatenate e rimuove i duplicati.
Promemoria
Buongiorno :-) Come posso fare a confrontare due file csv e mettere in evidenza le righe mancanti? Vorrei confrontare due file, uno di 4006 righe e l'atro di 3991 righe e trovare le righe che mancano