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 08/06/2020, à 00:47

judkil

PYTHON3: liste de liste

Bonjour !

Je souaiterai écrire une fonction qui prend en entré un carac ('O') et renvois toutes les lignes contenant 'O', mais seuleument 6 colonnes comme montré dans le output sous forme de liste de liste.

def function('O'):
	fa = open(fichier, 'r')
        texte = fa.read()
	d = []
	for line in fa:
		if line.startswith('O'):  # là il faut écrire dans une liste de liste les lignes commençant par O, je bloque à mort
                        d.append(line[12:16])
		        d.append(line[17:20])
                        d.append(line[22:26])
		        d.append(line[30:38])
                        d.append(line[38:46])
		        d.append(line[46:54])

        print(d)
	fa = open(fichier, 'r')

Mon script me donne une suite des append.

Position des string pour extraction des chaines
[0:6]  [6:11] [12:16] [17:20] [21:22] [22:26] [30:38] [38:46] [46:54]
PICK   1291    C       ASP     B       275     36.749  95.634  34.461 

fichier

PICK   1292  O   ASP B 275      36.698  95.930  35.652
PICK   1293  CB  ASP B 275      38.837  94.563  33.695
PICK   1297  N   ASN B 276      36.311  96.431  33.496
PICK   1298  CA  ASN B 276      35.723  97.741  33.762
PICK   1299  C   ASN B 276      34.241  97.712  34.171
PICK   1300  O   ASN B 276      33.581  98.752  34.197
PICK   1302  CG  ASN B 276      35.248  98.021  31.268

output

[['O', 'ASP', '275','36.698','95.930','35.652'], 
['O', 'ASN', '276','33.581', '98.752','34.197']] 

Ce serait une liste des lignes des colonnes 3,4 6, 7, 8, 9

Dernière modification par judkil (Le 08/06/2020, à 00:47)

Hors ligne

#2 Le 08/06/2020, à 06:52

pingouinux

Re : PYTHON3: liste de liste

Bonjour,
Essaye ceci

import sys
def function(fichier,carac):
  d = []
  with open(fichier, 'r') as fa:
    for line in fa:
      line_split=line.split()
      if line_split[2]==carac:  
        lig=[]
        lig.extend(line_split[2:4])
        lig.extend(line_split[5:9])
        d.append(lig)
  return d

fichier=sys.argv[1]
carac=sys.argv[2]
print(function(fichier,carac))

à appeler ainsi

python3 le_script.py fichier O

Ajouté : Plus simple

import sys
def function(fichier,carac):
  d = []
  with open(fichier, 'r') as fa:
    for line in fa:
      line_split=line.split()
      if line_split[2]==carac:  d.append( line_split[2:4] + line_split[5:9] )
  return d

fichier=sys.argv[1]
carac=sys.argv[2]

print(function(fichier,carac))

Dernière modification par pingouinux (Le 08/06/2020, à 07:34)

Hors ligne