Convertir un fichier texte en fichier CSV
Résolu
Bonjour
J'ai arrêté d'utiliser la suite
Qui pourrait m'aider à écrire un script python transformant le fichier texte suivant en CSV ? Étant débutant, en code python j'ai peur de ne pas y arriver. Ci-dessous, le format du fichier produit par
Merci beaucoup.
J'ai arrêté d'utiliser la suite
kasperskyet je suis bloqué pour exporter mes mots de passe. Je voudrais utiliser le logiciel libre
keepasset importer un fichier CSV contenant mes 150 passwords. Hélas, kaspersky manager ne proppose que d'exporter des fichier texte.
Qui pourrait m'aider à écrire un script python transformant le fichier texte suivant en CSV ? Étant débutant, en code python j'ai peur de ne pas y arriver. Ci-dessous, le format du fichier produit par
kaspersky.
Merci beaucoup.
Websites
Website name: xxxxxxx
Website URL: https://xxxxxxxx.com
Login name: xxxxxxx
Login: ***@***
Password: 123456
Comment:
---
Website name:xxxxxxx
Website URL: http://xxxxxx.com
Login name: xxxxxxx
Login: xxxxxxx
Password: 123456
Comment:
---
Website name: xxxxxxx
Website URL: http://xxxxxx.com
Login name: xxxxxxx
Login: xxxxxxx
Password: 123456
Comment:
---
4 réponses
-
Bonjour,
Voilà comment tu peux faire :
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import io # Si tu utilises un fichier, tu peux supprimer cette déclaration data = io.StringIO(""" Websites Website name: xxxxxxx Website URL: [https://xxxxxxxx.com] Login name: xxxxxxx Login: ***@*** Password: 123456 Comment: --- Website name:xxxxxxx Website URL: [http://xxxxxx.com] Login name: xxxxxxx Login: xxxxxxx Password: 123456 Comment: --- Website name: xxxxxxx Website URL: [http://xxxxxx.com] Login name: xxxxxxx Login: xxxxxxx Password: 123456 Comment: --- """) def parse_txt(data): entries = list() entry = dict() for line in data.readlines(): line = line.strip() if line == "---": entries.append(entry) entry = dict() if ":" in line: tab = line.split(":") key = tab[0].strip() value = ":".join(tab[1:]).strip() entry[key] = value if entry: entries.append(entry) return entries def entries_to_csv(entries, f): columns = sorted(set.union(*[ set(entry.keys()) for entry in entries ])) print("#" + ",".join(columns), file=f) print( "\n".join( ",".join( entry.get(key, "") for key in columns ) for entry in entries ), file=f ) entries = parse_txt(data) # Avec un fichier: # filename_txt = "fichier.txt" # with open(filename_txt) as f_in: # entries = parse_txt(f_in) filename_csv = "fichier.csv" with open(filename_csv, "w") as f_out: entries_to_csv(entries, f_out)
Contenu defichier.csv
:
#Comment,Login,Login name,Password,Website URL,Website name
,***@***,xxxxxxx,123456,https://xxxxxxxx.com,xxxxxxx
,xxxxxxx,xxxxxxx,123456,http://xxxxxx.com,xxxxxxx
,xxxxxxx,xxxxxxx,123456,http://xxxxxx.com,xxxxxxx
Bonne chance -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
pour t'aider, il faudrait que tu commences ton programme.
sinon, on le ferait à ta place. -
Oui je comprends, je vais continuer à progresser sur le travail des fichiers txt avec python et proposer un code .
-
Mamiemando,
C'était costaud comme code à écrire et je suis encore loin de pouvoir générer ce que tu as écrit ! J'ai testé ton code et il marche du feu de Dieu. Grâce à toi je peux mettre Kaspersky password manager à la poubelle. Je ne sais comment te remercier.
Bonne soirée et bon WE.