Calcul et écriture de fichier Python3

Fermé
William_32 - 25 mai 2020 à 02:30
 William_32 - 4 juin 2020 à 11:56
Bonjour,


POINT     1  N   VAL A   1      10.720  
POINT 2 CA VAL A 1 10.228
POINT 9 CA LEU A 2 6.624
POINT 17 CA SER A 3 4.831
POINT 23 CA PRO A 4 2.252
POINT 30 CA ALA A 5 -0.457
POINT 35 CA ASP A 6 1.069
POINT 43 CA LYS A 7 0.94


J'aimerai créer une fonction qui extrait les lignes contenant POINT et CA puis si la soustraction leur valeur dans la sixième colonne consécutif est inférieure à 3 , écrire dans un fichier de sorti :
 POINT 1 et POINT 2 chaine différente
POINT 2 et POINT 3 meme chaine
POINT 3 et POINT 4 meme chaine

....

Si quelqu'un aurait une idée ?? Merci beaucoup !

Configuration: Windows / Firefox 76.0
A voir également:

15 réponses

Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 07:49
Bonjour
https://python.doctor/page-expressions-regulieres-regular-python

Et un petit exemple
http://regexstorm.net/tester?p=POINT+%5cd%2b+CA+.%2b&i=POINT+1+N+VAL+A+1+10.720+%0d%0aPOINT+2+CA+VAL+A+1+10.228+%0d%0aPOINT+9+CA+LEU+A+2+6.624%0d%0aPOINT+17+CA+SER+A+3+4.831%0d%0aPOINT+23+CA+PRO+A+4+2.252+%0d%0aPOINT+30+CA+ALA+A+5+-0.457+%0d%0aPOINT+35+CA+ASP+A+6+1.069+%0d%0aPOINT+43+CA+LYS+A+7+0.94

(Lien non cliquable, il faut le copier coller dans ta barre d’adresse)
0
Je ne vois pas ce qu'il se passe.

Avez-vous une idée pour ce problème ?
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 17:38
Qu’est ce que tu ne voies pas?
Parce que nous on ne voie que ce que tu écris, et ça ne décrit rien.....
0
D'accord, je vais tenter de reformuler
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

J'aimerai créer une fonction qui extrait uniquement les lignes contenant POINT ( en colonne 1) et CA ( en colonne 3 ) de mon_fichier1.txt.
mon_fichier1.txt
POINT 1 N VAL A 1 10.720
POINT 2 CA VAL A 1 10.228
POINT 9 CA LEU A 2 6.624
POINT 17 CA SER A 3 4.831
POINT 23 CA PRO A 4 2.252
POINT 30 CA ALA A 5 -0.457
POINT 35 CA ASP A 6 1.069
POINT 43 CA LYS A 7 0.94

et qui écrit mon_fichier2.txt :
mon_fichier2.txt
POINT 2 CA VAL A 1 10.228
POINT 9 CA LEU A 2 6.624
POINT 17 CA SER A 3 4.831
POINT 23 CA PRO A 4 2.252
POINT 30 CA ALA A 5 -0.457
POINT 35 CA ASP A 6 1.069
POINT 43 CA LYS A 7 0.94

puis sur mon_fichier2.txt qui soustraie les valeurs 2 à 2 des lignes consécutives de la septième colonne. On aurait : 10.228 - 6.624. Si cette valeur est inférieur à 3, alors il faudrait écrit en sortie:
POINT 2 et POINT 9 chaine différente
POINT 9 et POINT 17 meme chaine # car le résultat de 6.624 - 3 4.831 est inférieur à 3
POINT 17 et POINT 23 meme chaine
POINT 23 et POINT 30 meme chaine
...
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 18:49
Ça OK, mais tu as répondu
Je ne vois pas ce qu'il se passe.

0
J'aimerais juste créer une fonction qui me permet d'obtenir la dernière sortie
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 19:28
D'accord es tu allé voir le tuto sur les regex et l'exemple que je t'ai fait?


0
Oui je suis allé voir. L'exemple et le site sur les expression régulière. Mais pour l'exemple j'aimerai que ce soit tourner en python 3 simple, avec un if par exemple. Je sais qu'il faut que j'utilise un open pour ouvrir un fichier puis un write pour créer le fichier mon_fichier2.txt. Je tatonne
Là je demande de l'aide simple à quelqu'un qui s'y connaîtrait en python3. Mais si c'est pour me faire un cours qui va prendre 80 messages, ça sert à rien.
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 20:01
Ha oui, mais ici on ne fait pas le boulot à ta place.
On donne des pistes et des cours pour que le demandeur apprenne de lui même.
C'est écrit dans la charte du forum.

Après quand le demandeur présente un code, on peut parler de ce code.

Certes je ne te propose un outil que sur une partie de ton besoin, mais python, c'est pas mon fort, et je ne m'y mets que si le demandeur montre un peu d'effort de son coté


0
Okk je vois c'est très gentil de ta part, mais mon problème est dirigé pour les personnes qui s'y connaissent en python3, pour qu'ils soient écrit python3.
Je vais pas faire semblant, je ne cherche pas de pistes, je cherche une réponse.

Les gens vont sur des forums pour trouver des réponses à leur problème informatique , après pourquoi pas discuter de la réponse.
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 20:48
Alors voilà le point de la charte qui correspond à peu près à ton cas
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

Certes cela a été pensé pour un étudiant qui ne veut pas se donner la peine de faire ses exercices, mais cela s'applique à toute demande de code tout cuit.
0
Ok je comprends.

Aurais-tu une piste pour faire la soustraction des colonnes 7 de deux lignes consécutives. Est ce qu'il faudrait que je passe par une boucle ? Je ferais donc un i - j . Mais comment définir i ?
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
25 mai 2020 à 21:41
Oui,

1 tu écris une fonction, que je vais appeler "BonneLigne", elle retourne, grâce à la regex la première ligne qui a le format souhaité

2 dans ta fonction principale, tu appelles "BonneLigne" et tu stockes le résultat dans une variable L1
Dans une boucle
  • tu appelles à nouveau "BonneLigne",
    • si elle n'a pas de résultat, le traitement est fini
    • si elle a un résultat,
      • tu le stockes dans L2
      • tu "splites" le texte pour récupérer le numéro de la ligne et la valeur (tu peux aussi le faire avec la regex avec des groupes dans "BonneLigne")
      • tu fais ta soustraction et tu composes ta ligne de sortie en fonction
      • tu écris la ligne de sortie dans le fichier
      • tu mets le contenu de L2 dans L1 pour la prochaine fois




PS: la regex qui avec les groupes et qui rejette une ligne sans nombre à la fin
https://regex101.com/r/EUM41W/1
Dans la colonne de droite on voir chaque "Match" et les 2 groupes

PS2: ce matin j'étais sur ma tablette, et regex101 ne marche pas avec.

0
Bonjour,

La premiere étape que je dois réaliser c'est ouvrir le fichier car je ne pars pas d'une liste

fichier = open("maitre_corbeau.txt", "r")


Mais dès que python ouvre un fichier est ce qu'il le voit comme un tableau ?
0
Whismeril Messages postés 18950 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 février 2024 921
2 juin 2020 à 07:23
Bonjour,

Non.

La variable fichier est un fichier, il faut ensuite utiliser les méthodes associées

http://www.chicoree.fr/w/Lire_et_%C3%A9crire_un_fichier_texte_avec_Python
0
D'accord merci !
0