2017-06-28 4 views
0

Ich habe diese Tabelle von Werten und ich frage mich, wie kann ich das Programm jede Zeile lesen lassen. Für jede Zeile mit 'a', 'g', 'c' oder 'u' möchte ich, dass die Zählung um eins erhöht wird. Für dieses Beispiel, wenn ich es laufen, sollte es ein Ergebnis von 12.Wie man die Anzahl erhöht, wenn das Skript Linien liest?

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 
haben

Der Code, den ich unter versucht:

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  

Irgendwie, wenn ich es laufen, gibt es keine Liste der Anzahl:

{'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]} 

Ich weiß, das ist eine Menge Informationen, aber gibt es irgendwelche Tipps, die mir dabei helfen können? Danke vielmals!!

Antwort

1

Sie verwenden die ganze Zeile als Schlüssel im Wörterbuch. Wenn Sie also keine identischen Zeilen haben, werden alle Werte 1 sein. Warum brauchen Sie das Wörterbuch überhaupt? Ich hatte den Eindruck, dass Sie die Anzahl der Zeilen zählen möchten, die mit einem der Zeichen 'a','c','g','u' beginnen.

Dazu der folgende Code genügen:

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 
Verwandte Themen