Automatiser le traitement d'un fichier texte

Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 28 mars 2012 à 21:57
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 1 avril 2012 à 23:59
Salut tout le monde,

j'ai un fichier *.xls bien formaté avec des données en lignes et colonnes.

Sauf qu'il n'est pas directement "lisible" pour un programme, alors je passe par une copie manuelle dans un fichier texte...
Mais là aussi, c'est pas directement lisible ; je dois effectuer certaines opérations pour le mettre en forme afin de le rendre 100% utile pour le programme final. Ces opérations consistes en des "rechercher et remplacer" avec quelques suites de commandes d'expressions régulières.

Et même si je n'ai pas encore fini de trouver toutes ces commandes pour le mettre en forme en correctement, j'aimerai pouvoir "sauvegarder" la suite exacte de celles-ci, afin de les appliquer à l'avenir à d'autres fichiers texte qui devront passer de la même "mise en page" de départ, à celle d'arrivée. Une sorte de boîte noire dans laquelle on mettrai le fichier de base et qui sortirai le fichier bien formaté et prêt à l'emploi pour mon soft.

Qu'est-ce que je peux faire pour cela ? Quelle est la méthode la plus pratique et universelle aussi, sachant que des utilisateurs lambda devront l'utiliser après mon départ ?
Bonus : peut-on aussi imaginer appliquer la première opération (i.e. le passage du *.xls au *.txt) automatiquement ?


Je mets ce message dans la catégorie [Programmation] mais il touche aussi bien Windows ou Linux par exemple. D'ailleurs je suis sous Windows pour faire ce traitement et j'utilise Notepad++ pour bidouiller mon fichier texte.

Voilà, si besoin d'autres infos n'hésitez pas.

Merci beaucoup !!
Et bonne soirée.
A voir également:

4 réponses

heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 131
Modifié par heyquem le 29/03/2012 à 22:08
Bonsoir,

Si je comprends bien, tu fais tout à la main et en utilisant quelques fonctionnalités de Notepad++.
Mais, pour autant que je sache, les fonctionnalités de Notepad++ ne peuvent pas être considérées comme de la programmation.

Seul un programme écrit dans un langage donné et enregistré, s'exécutant sans avoir à retaper des formules répétitivement, t'apportera la diminution de travail que tu recherches.

La question est donc "sais tu programmer ? connais tu un langage de programmation ?"

Si ce n'est pas le cas, tu peux te mettre à Python, ton problème sera rapidement résolu avec un programme aisément écrit en Python, car d'après ce que tu expliques tes besoins sont assez simples.

Si cela t'intéresse, il faudrait donner un fichier de départ, le fichier que tu veux obtenir, et les transformations à faire pour passer de l'un à l'autre, je pourrais essayer de t'aider à écrire le programme. Car Python est puissant pour les traitements de texte
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
30 mars 2012 à 06:04
Si tes fichiers de sortie sont du XML, utilise un processeur XSLT comme XALAN avec XPATH
Plutôt que de bidouiller.
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 131
31 mars 2012 à 00:04
Il n'a pas parlé d'obtenir un fichier en XML, il a dit qu'il doit transformer un fichier *.xls en fichier *.txt afin de le passer à un programme.

Je me suis assuré que le contenu réel (en le lisant comme un fichier binaire) d'un fichier *.xls n'est pas du XML: il n'y a pas de balises, il n'y a pas d'arbre logique à analyser. C'est donc relativement simple à analyser et je maintiens que cela peut se faire aisément avec Python, sans que ce soit du bidouillage.

Pas la peine non plus de vouloir prendre un vaisseau spatial pour traverser la rue.
0
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
1 avril 2012 à 22:08
Salut,

alors :

- les fichiers sont du *.xls et j'aimerai avoir du *.txt à la fin.
- il y a deux trois commandes que j'utilise avec le notepad pour chercher & remplacer du texte et mettre en forme mon truc pour que ce soit accepté par mon programme après.

Certaines regex sont longues et je me contente de les copier/coller depuis un autre fichier texte. Mais c'est pas très amical comme méthode... et effectivement, les fonctionnalités de notepad++ ne sont pas vraiment de la programmation.

et on en vient au point noir de l'histoire :
je ne sais pas programmer... enfin je bidouille un peu du latex et du matlab mais d'autres langages, non, bien que j'aille fait un pet de C il y a fort (trop) longtemps.


Python ? Oui ça m'intéresse, bien entendu. Je pensais m'y diriger petit à petit d'ailleurs, mais comble de malchance, je n'ai trouvé aucun "truc" (je cherche le mot pour dire "environnement de travail complet pour un langage de programmation") pour faire du python sans être administrateur sous Windows (poste de 'travail')... Donc une sorte d'environnement complètement portable.


L'autre option serait de faire ça depuis mon pc perso, et là c'est sous Linux que je suis. Des conseils ? J'ai entendu parlé de Geany... Eclipse, et de Code::Blocks pour ce genre d'outils. Si vous en avez d'autres, ou des conseils, remarques, etc, je prends avec plaisir.

Ah, et pour Python, euh... il comprend les regex directement ?! Genre si je peux lui refiler mes lignes telle quelle, ce serait le top.

Voilà !
Merci et bon début de semaine à tout(e)s ! ;)
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 131
Modifié par heyquem le 2/04/2012 à 00:00
Pour télécharger Python:
https://www.python.org/downloads/

Pour l'installer c'est fort simple. Mais si tu ne peux pas le faire parce que tu n'es pas administrateur, je ne suis pas assez calé pour savoir comment contourner le problème.

Si tu installes sur ton microordinateur perso, tu verras que Python est accompagné d'un EDI nommé IDLE. Jusqu'à présent je n'ai utilisé que lui, je n'en ai pas pratiqué d'autres.

Python se débrouille for bien avec les regex. Je ne comprends pas ce que tu entends par "refiler des lignes"
Voici un exemple, la détection et la capture de 3 chiffres précédés d'un blanc et suivis de a ou z exclusivement:

import re 

regx = re.compile(' (\d{3})[az]') 


text = 'sbvfg  2145f kgsjk iuy125a kjhf 45856zjuy 479anhfg 5420a lkjhdf 325ahytte' 

print regx.findall(text)



résultat

['479', '325']
0