Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/05/2020, à 02:59

judkil

(Python3) extraire des lignes

Bonjour !

Je débute en python 3 et j'aimerai savoir si quelqu'un saurait comment :
ma_liste.txt

VALUE  CD2 TYR D 145   12.280  -5.995  27.749  
VALUE  CZ TYR D 145   14.570  -6.431  28.243
VALUE  ND HIS D 146   5.716  -9.212  31.497
VALUE  CD HIS D 146   7.731  -9.936  31.069
TER   OX  HIS D 146                                                      
HETVAL FE HEM 142   8.657  12.035  27.628 
HETVAL CHC HEM 142   8.220  10.950  24.353

J'aimerai créer une fonction qui prend en entrée ma_liste.txt et qui écrit un nouveau fichier ma_liste2.txt, en ne prenant en compte que les lignes où est écrit VALUE et TER puis qui recommence la numérotation à 0 et non plus à 145 (colonne 5) en suivant les changement de la colonne 3.

Voici un exemple du ficier output
ma_liste2.txt

VALUE  CD2 TYR D 0   12.280  -5.995  27.749  
VALUE  CZ TYR D 0   14.570  -6.431  28.243
VALUE  ND HIS D 1   5.716  -9.212  31.497
VALUE  CD HIS D 1   7.731  -9.936  31.069
TER   OX HIS D 1   

Merci beaucoup !

Dernière modification par judkil (Le 25/05/2020, à 17:18)

Hors ligne

#2 Le 25/05/2020, à 08:27

Compte supprimé

Re : (Python3) extraire des lignes

Bonjour,

les valeurs 00 pour la ligne 1 puis 1 pour la ligne 2 puis 2 pour la ligne 3...

Ce n'est pas ce que je vois sur ton exemple donné pour  ma_liste2...

#3 Le 25/05/2020, à 17:04

judkil

Re : (Python3) extraire des lignes

Voilà j'ai effectué quelques simplifications et j'ai tenté mieux expliquer le problème. smile
Si quelqu'un aurait une idée, je suis ok !

Dernière modification par judkil (Le 25/05/2020, à 17:04)

Hors ligne

#4 Le 25/05/2020, à 17:17

pingouinux

Re : (Python3) extraire des lignes

Bonjour,

#!/usr/bin/env python3

with open('ma_liste.txt','r') as f, open('ma_liste2.txt','w') as g:
   for lig in f:
      ligspl=lig.split()
      if ligspl[0]=='VALUE' or ligspl[0]=='TER':
         ligspl[4]=str(int(ligspl[4])-145)
         g.write('%s\n'%' '.join(ligspl))

Hors ligne

#5 Le 25/05/2020, à 17:48

judkil

Re : (Python3) extraire des lignes

Merci beaucoup mais est-ce sous forme d'une fonction cela donnerait quelque chose comme:

#!/usr/bin/env python3

with open('ma_liste.txt','r') as f, open('ma_liste2.txt','w') as g:

def nouveau(ma_liste.txt):
  for lig in f:
      ligspl=lig.split()
      if ligspl[0]=='VALUE' or ligspl[0]=='TER':
         ligspl[4]=str(int(ligspl[4])-145)
         g.write('%s\n'%' '.join(ligspl))
      return g 

Hors ligne

#6 Le 25/05/2020, à 17:57

pingouinux

Re : (Python3) extraire des lignes

#!/usr/bin/env python3

def nouveau(fichier_in,fichier_out):
   with open(fichier_in,'r') as f, open(fichier_out,'w') as g:
      for lig in f:
         ligspl=lig.split()
         if ligspl[0]=='VALUE' or ligspl[0]=='TER':
            ligspl[4]=str(int(ligspl[4])-145)
            g.write('%s\n'%' '.join(ligspl))

nouveau('ma_liste.txt','ma_liste2.txt')

Hors ligne

#7 Le 25/05/2020, à 18:22

judkil

Re : (Python3) extraire des lignes

Le fichier ma_liste2.txt est un output issu d'opérations sur ma_liste1.txt. Initialement il n'existe pas. Si je lui donne en argument cela ne va pas bloquer ?

Dernière modification par judkil (Le 25/05/2020, à 18:22)

Hors ligne

#8 Le 25/05/2020, à 18:30

pingouinux

Re : (Python3) extraire des lignes

Le fichier ma_liste2.txt est un output issu d'opérations sur ma_liste1.txt. Initialement il n'existe pas. Si je lui donne en argument cela ne va pas bloquer ?

Le fichier ma_liste2.txt va être créé s'il n'existe pas, et écrasé s'il existe déjà.

Hors ligne