2016-04-28 18 views
1

Ich habe ein Programm, das eine Liste von Aminosäuresequenzen für ein Protein in Influenza A durchläuft, das ich analysiere und Aminosäure an Position 627 findet in jeder Aminosäuresequenz in meiner FASTA-Datei für jedes Protein.Python 2.7 Geschachtelte If-Anweisung druckt kein String-Literal nach dem Drucken der Array-Position

arbeitet Mein Code wie dieser

with open(file, "r") as source: 
    for heading_and_lines in group_by_heading(source): 
     heading= heading_and_lines[0] 
     lines= heading_and_lines[1:] 
     lines = ''.join(lines) 
    if lines[627-1] == 'K': 
     print "---------------MUTATION BELOW--------------" 
     print heading 
     print lines[627-1] 
     #print "-------------------------------------------" 

print "end of file" 

Aber mein Code nicht Arbeit wie diese Aus irgendeinem Grund

with open(file, "r") as source: 
    for heading_and_lines in group_by_heading(source): 
     heading= heading_and_lines[0] 
     lines= heading_and_lines[1:] 
     lines = ''.join(lines) 
    if lines[627-1] == 'K': 
     print "---------------MUTATION BELOW--------------" 
     print heading 
     print lines[627-1] 
     print "-------------------------------------------" 

print "end of file" 

Drucken der Zeile unterhalb der Mutation, die ich zurückkehrt haben einen Fehler entdeckt, und unerwarteter Einzug Siehe Ich möchte die Linie unter jeder Mutation, genau wie die Linie oben, damit ich die Mutationen klar organisieren kann. Gibt es einen Grund, warum Sie glauben, dass die folgende Druckanweisung nicht funktioniert?

Sorry, wenn das Verwirrung klang, und wie immer danke für Ihre Zeit.

+2

prüfen Tabs und Abstand. Wenn Sie beide in Ihrem Programm haben, wird es brechen. – TigerhawkT3

+0

Wenn ich es zurückziehe, druckt es für jeden Stamm eine Zeile unten, wenn ich nur die folgende Zeile für Stämme drucken möchte, die die Mutation von Lysin haben (AKA eine Aminosäure 'K' Übereinstimmung) – SweetJD14

+0

Darn. Ich habe gerade alle Abstände überprüft und es lässt mich einfach kein String-Literal drucken, nachdem ich die Aminosäure an Position [627-1] gedruckt habe. Aus irgendeinem Grund sagt es immer wieder einen unerwarteten Einzug. – SweetJD14

Antwort

1

Ihr Einzug falsch ist, einzurücken Code wie folgt

with open(file, "r") as source: 
    for heading_and_lines in group_by_heading(source): 
     heading= heading_and_lines[0] 
     lines= heading_and_lines[1:] 
     lines = ''.join(lines) 

     if lines[627-1] == 'K': 
      print "---------------MUTATION BELOW--------------" 
      print heading 
      print lines[627-1] 
      print "-------------------------------------------" 
+0

Perfekt. Funktioniert perfekt wie ich wollte. Könnten Sie etwas genauer erklären, warum meine Einrückung falsch war? – SweetJD14

+1

@ SweetJD14 Hey, du bist vielleicht neu, aber die beste Art, hier "Danke" zu sagen, ist Antworten zu akzeptieren. Sie können dies tun, indem Sie auf das graue "V" unter den Pfeilen links neben dem Fragetext klicken. Auf diese Weise können andere Benutzer sehen, dass Sie die Antwort akzeptiert haben und es ist wahrscheinlich die beste Antwort. –

+0

Verstanden, einfach angeklickt! Ja, ich bin ein bisschen neu, danke für den Rat. Hab einen guten. – SweetJD14