0
votes

Comparez deux fichiers CSV et des modifications de sortie

J'ai deux fichiers CSV, les deux sont différents mais similaires. Je voudrais les comparer et produire des modifications et si une variable a été ajoutée ou supprimée. Je voudrais émettre les modifications apportées à un nouveau fichier CSV ou texte.

ci-dessous est un code de ce que j'ai déjà essayé ainsi que les deux fichiers CSV. Je serais également prêt à utiliser DIFFLIB et de produire cela à un fichier texte.

file1.csv: xxx

fichier2.csv: xxx

voici le code que j'ai essayé: xxx

la sortie attendue serait un fichier csv ou un fichier texte qui montrerait des choses comme: xxx


4 commentaires

On dirait que vous devriez rejoindre les deux fichiers et analyser les résultats


@Mucio pourriez-vous s'il vous plaît clarifier?


Vous pouvez mettre le contenu des fichiers dans deux structures, peut-être que la dict et les achètent pour voir si la valeur existe ou non ou est modifiée dans l'autre fichier. Ou vous pouvez utiliser quelque chose comme les pandas (et ses jointures) pour le faire


Avez-vous vérifié cette réponse? Stackoverflow .Com / Questions / 5268929 / ...


3 Réponses :


0
votes

Utilisez un outil de comparaison de fichiers, par exemple. diff (1) sous Unix / Linux.


0 commentaires

0
votes

Vous voulez comparer deux tables. Le bon outil pour le travail est la base de données relationnelle.

Les extraits de votre code utilisent Python. Python est livré avec le moteur de base de données SQLITE3, mais je ne vois pas une raison d'utiliser Python pour la tâche de traitement simple que vous demandez. P>

à la place, je le ferais dans SQLITE3 Code> lui-même, enveloppé dans un script shell: p> xxx pré>

mwe: p> xxx pré>

sortie: p>

changes:
"name4 value removed"
"name8 value removed"
"name10 value removed"
"name3 value added"
"name7 value added"
"name11 value added"
"name12 value added"
"name1 value changed from 2.0001 to 3.0000"
"name5 value changed from 1.0000 to 1.0901"


0 commentaires

1
votes

Ma solution consiste à activer chaque CSV dans un dictionnaire avec la première colonne en tant que touches et la deuxième colonne que les valeurs. Après cela, je peux faire boucler les touches et déterminer si les valeurs correspondantes ont été modifiées, supprimées ou ajoutées.

name1 value changed from 2.0001 to 3.0000
name3 value added
name4 value removed
name5 value changed from 1.0000 to 1.0901
name7 value added
name8 value removed
name10 value removed
name11 value added
name12 value added


2 commentaires

Je ne veux pas scinder les noms parce que j'utilisais juste cela comme exemple. Ce que je traite en fait n'est que des chaînes différentes. Que ferais-je définir la clé égale à si je ne voulais pas utiliser distinct_text_and_number ?


Dans ce cas, il suffit d'utiliser pour la clé de tri (all_keys): et oubliez la touche = ... partie. Si vous ne vous souciez pas du tri, alors pour la clé dans All_Keys: