Fichier .CSV à partir d'un fichier .TXT sans séparateur
Fermé
Quentin
-
26 nov. 2013 à 17:49
Bonjour a tous,
Voila comme source j'ai un fichier.txt que me sort un logiciel qui contient une liste de cartes et j'aimerais trouvé ou crée un programme qui me crée en sortie un fichier CSV
Voila a peu près le modèle de ce que contient mon fichier source:
Extension
********
"numéro carte/total de carte" "nom de la carte" "rareté" "particularité" "langue" "quantité" "état"
Evidemment il n'y a pas de guillemet dans le texte c'est juste pour vous montrez les différents champs
le soucis c'est que comme il n'y a pas de séparateur c'est assez compliqué de le convertir en fichier CSV, çà pourrait fonctionner pour certaines cartes en mettant les espaces comme séparateur mais le problème c'est que certaines cartes on un nom composé de plusieurs mots donc cela ne marcherait pas bien
Ce qu'il faut savoir aussi c'est que par exemple si la carte n'a pas de particularité ou qu'elle n'est qu'en un seul exemplaire le logiciel n'écrit rien
Au niveau de la rareté, de la langue et de l'état ce sont tjrs les même mots qui revienne du coup serait t'il possible de les détecter et les mettre dans la bonne colonne
En gros je vous donne un exemple de ce que j'aimerai qu'un logiciel ou un langage de programmation me fasse :
-Quand il détecte une ligne vide il sait que la prochaine ligne c'est le nom de l'extension et donc pour toutes les prochaines lignes après le nom de l'extension, tant qu'il ne rencontre pas une autre ligne vide, il me rajoute a chaque fois un champ avec le nom de l'extension
Si il rencontre une ligne avec des "*" il l'ignore
Donc si on retire ces cas de figure toutes les lignes restantes sont des cartes avec leur caractéristiques (numero,nom,quantité,language etc...) et donc a partir de ces ligne il doit me crée des lignes dans le fichier CSV
donc il analyse la ligne et du 1er caractère jusqu'à ce qu'il rencontre un espace il sait que c'est le champs numéro et qu'il doit le mettre dans la colonne n°1
Ensuite il continu après l'espace et tant qu'il ne rencontre pas une parenthèse ou certains mot comme Commune ou Rare il sait que ce qu'il vient de lire c'est le nom de la carte et qu'il doit le mettre dans la colonne n°2
Ensuite si le prochain mot est par exemple Rare ou Holo il sait que c'est la rareté et que donc c'est la colonne n°3
Ensuite si il tombe sur le mot REVERSE il sait que c'est une particularité et il le met dans la colonne n°4
Si il rencontre une parenthèse il lit ce qu'il y a à l'intérieur et il sait que c'est la langue et il le met dans la colonne n°5
Ensuite si il trouve un "x" suivi d'un chiffre ou d'un nombre il sait que c'est la quantité et donc il met juste ce nombre dans la colonne n°6
Et ensuite si il trouve encore une parenthèse il sait qu'a l'intérieur c'est l'état de la carte qu'il met dans la colonne n°7
Donc la il arrive a la fin de la ligne et si il n'a pas trouvé de x suivi d'un numero il met "1" pour la quantité dans la colonne n°6 et avant de passé a la suivante il met dans la colonne n°8 le nom de l'extension qu'il avait gardé en mémoire auparavant
et dans la colonne n°9 il met le chemin pour l'image de la carte qui sera composé de par exemple: images/extension/1/2
pour le 1 il mettra ce que contient le nom de l'extension qui est situé dans la colonne n°8
pour le 2 il prendra le numéro de la carte qui est contenu dans la colonne n°1 mais sans le "/total de carte" et rajoutera .jpg a la fin
en gros si j'ai ça comme fichier texte:
(ligne vide)
Famille a toto
------------
1/10 Toto Rare (FR) x2 (Neuf)
2/10 Tata Commune Reverse (FR) (Neuf)
3/10 Tutu (FR) (Abimée)
Je vroudrais que le programme me sorte en .csv :
Numero;Nom;Rareté;Particularité;Langue;Quantité;Etat;Extension;URLimg
1/10;Toto;Rare;;FR;2;Neuf;Famille a toto;images/Famille a toto/1.jpg
2/10;Tata;Commune;REVERSE;FR;1;Neuf;Famille a toto;images/Famille a toto/2.jpg
3/10;Tutu;;;FR;1;Abimée;Famille a toto;image/Famille a toto/3.jpg
Voila a peu près ce que je veux que le programme fasse
Donc j'aimerai juste savoir a votre avis si déjà un logiciel qui fasse cela existe ( mais j'en doute) ou sinon quel serait le langage de programmation le plus adapté pour faire ce genre de programme j'avais pensé a python ou awk ou meme le vba d'excel
Merci d'avance
A voir également:
Fichier .CSV à partir d'un fichier .TXT sans séparateur