2017-06-28 1 views
0

J'ai cette table de valeurs et je me demandais comment laisser le programme lire chaque ligne. Pour chaque ligne avec 'a', 'g', 'c' ou 'u', je veux que le nombre augmente d'une unité. Pour cet exemple, quand je le lance, il devrait avoir un résultat de 12.Comment augmenter le nombre de caractères lorsque le script lit des lignes?

a 1 0.000 S 
g 2 0.260 S 
a 3 0.990 S 
a 4 0.980 S 
c 5 0.000 S 
u 6 1.000 S 
c 7 0.000 S 
a 8 1.000 S 
a 9 1.000 T 
u 10 0.820 S 
a 11 1.000 T 
g 12 0.000 S 
F 13 1.000 S 
S 14 1.000 S 
T 15 1.000 S 

Le code que j'ai essayé est ci-dessous:

rna_residues = ['a','c','g','u'] 
count_dict = {} 
     #Making the starting number 0 
     rna_count = 0 
     #if any lines of the file starts with one of the rna_residue 
     if line.startswith(tuple(rna_residues)): 
      for residue in line: 
       if residue in rna_residues: 
        rna_count += 1 
      count_dict[line] = [rna_count] 
      print count_dict  

D'une certaine façon, quand je le lance, il n'y a pas de liste du compte:

{'a 1 0.000 S\n': [1]} 
{'g 2 0.260 S\n': [1]} 
{'a 3 0.990 S\n': [1]} 
{'a 4 0.980 S\n': [1]} 
{'c 5 0.000 S\n': [1]} 
{'u 6 1.000 S\n': [1]} 
{'c 7 0.000 S\n': [1]} 
{'a 8 1.000 S\n': [1]} 
{'a 9 1.000 T\n': [1]} 
{'u 10 0.820 S\n': [1]} 
{'a 11 1.000 T\n': [1]} 
{'g 12 0.000 S\n': [1]} 

Je sais que c'est beaucoup d'informations, mais y at-il des conseils qui peuvent m'aider avec cela? Merci beaucoup!!

Répondre

1

Vous utilisez toute la ligne comme une clé dans le dictionnaire, donc à moins d'avoir des lignes identiques, toutes les valeurs seront 1. Pourquoi avez-vous besoin du dictionnaire? J'étais sous l'impression que vous voulez compter le nombre de lignes qui commencent par l'un des caractères 'a','c','g','u'.

Pour cela, le code suivant est suffire:

rna_residues = ['a','c','g','u'] 
rna_count = 0 
with open('/path/to/file') as opened_file:  
    for line in opened_file: 
     # or if line[0] in rna_residues 
     if any(line.startswith(residue) for residue in rna_residues): 
      rna_count += 1 
print rna_count 
# 12