Extraire une valeur d'exposant dans un fichier txt
Fermé
Wizout
Messages postés
2
Date d'inscription
lundi 18 mars 2019
Statut
Membre
Dernière intervention
20 mars 2019
-
18 mars 2019 à 11:50
Wizout Messages postés 2 Date d'inscription lundi 18 mars 2019 Statut Membre Dernière intervention 20 mars 2019 - 20 mars 2019 à 09:49
Wizout Messages postés 2 Date d'inscription lundi 18 mars 2019 Statut Membre Dernière intervention 20 mars 2019 - 20 mars 2019 à 09:49
A voir également:
- Extraire une valeur d'exposant dans un fichier txt
- Extraire une video youtube - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
1 réponse
[Dal]
Messages postés
6202
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 097
Modifié le 20 mars 2019 à 09:53
Modifié le 20 mars 2019 à 09:53
Salut Wizout,
Lorsque tu postes sur le forum, ne poste pas des images du code ou des données traitées, mais poste le code ou les données et ce en utilisant les balises de code qui préservent les espaces et l'indentation et colorent et numérotent les lignes.
Cela nous permet de tester.
Alors, tout d'abord, je vais supposer que dans l'exemple ci-dessus tu veux récupérer : '102', '125', '-8.436' pour le premier groupe, puis '103', '124', '-3.338' pour le deuxième, et potentiellement d'autres données structurées de la même façon venant à la suite du fichier dans un troisième groupe, quatrième, etc..
Ce type de travail est beaucoup plus facile en utilisant les regexp compatibles Perl sous réserve de savoir les utiliser.
Voilà ce que cela donnerait avec un fichier
cela se fait en 3 lignes avec une regexp adaptée et un script Python3 comme suit, que j'ai nommé capture.py :
cela donne à l'exécution :
Tu devrais apprendre les regexp, c'est très puissant pour faire ce genre de chose.
Dal
Lorsque tu postes sur le forum, ne poste pas des images du code ou des données traitées, mais poste le code ou les données et ce en utilisant les balises de code qui préservent les espaces et l'indentation et colorent et numérotent les lignes.
Cela nous permet de tester.
Alors, tout d'abord, je vais supposer que dans l'exemple ci-dessus tu veux récupérer : '102', '125', '-8.436' pour le premier groupe, puis '103', '124', '-3.338' pour le deuxième, et potentiellement d'autres données structurées de la même façon venant à la suite du fichier dans un troisième groupe, quatrième, etc..
Ce type de travail est beaucoup plus facile en utilisant les regexp compatibles Perl sous réserve de savoir les utiliser.
Voilà ce que cela donnerait avec un fichier
data.txtoù j'ai tenté de reconstituer une structure équivalente à celle de ton fichier pour les besoins de la mise au point de la regexp, comprenant :
> pr theta i ii j jj stress angle I 102 J 125 -8.436 > set log off * log file qsggq bla, bla > pr theta i ii j jj stress angle I 103 J 124 -3.338
cela se fait en 3 lignes avec une regexp adaptée et un script Python3 comme suit, que j'ai nommé capture.py :
import re # charger la totalité du fichier dans une string with open('data.txt', 'r') as myfile: data = myfile.read() # compiler la regexp en mode multiligne et en matchant les # retours à ligne avec . pexp = re.compile(r'.*?stress angle?.*?I\s([+-.0-9]+).*?J\s([+-.0-9]+).*?([+-.0-9]+)', flags=re.MULTILINE|re.DOTALL) # capturer toutes les données matchant la regexp et créer # une liste de tuples captures = pexp.findall(data) print(captures)
cela donne à l'exécution :
$ python3 capture.py [('102', '125', '-8.436'), ('103', '124', '-3.338')]
Tu devrais apprendre les regexp, c'est très puissant pour faire ce genre de chose.
Dal
20 mars 2019 à 09:49
Wiz