Wie übergibt man eine Zeichenfolge an eine Variable, wenn ein Indexfehler gefunden wird? Betrachten Sie den Code:Variable zuweisen, wenn Listenindex außerhalb des Bereichs liegt Python-Fehler
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
a=fasta1[int(l1)]
b=fasta2[int(l2)]
alignments = pairwise2.align.globalxx(a,b)
top_aln = alignments[0]
aln_a, aln_b, score, begin, end = top_aln
print aln_a+'\n'+aln_b
outfast1 = aln_a
outfast2 = aln_b
Eine Reihe dieser Funktionen importiert werden müssen (pairwise2 align), aber die file.lists sind einzelne Spalte Textdateien mit einer Sequenz-ID (Text und Zahlen) pro Zeile, die verwendet werden, Aus den Fasta1- und Fasta2-Textdateien extrahieren.
Grundsätzlich mag ich try:
jede Liste Befehl (a=fasta1[int(l1)]
) und wenn kein Fehler vorhanden ist (die ID ist in Reichweite), als normal tun (Variablen a und b für diese Iteration zuordnen), aber wenn nicht, weist die ‚a‘ Variable einig Platzhalter-Text wie ‚GGG‘:
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
try:
a=fasta1[int(l1)]
except IndexError,e:
a="GGG"
continue
try:
b=fasta2[int(l2)]
except (IndexError):
b="CCC"
continue
Dieser Code funktioniert nicht ganz (bei obigem Code integriert), was nicht verwunderlich ist mein Mangel an python Fähigkeiten, aber ich don‘ Ich weiß ganz genau warum. Ich bekomme trotz der Druckaufrufe tatsächlich keine Textausgabe ... Denke ich über dieses Recht nach? Wenn es keinen Fehler im Index gibt, möchte ich, dass es weitergeht und die paarweise Ausrichtung (mit den ersten a- und b-Variablen) ausführt und dann etwas Text auf stdout druckt.
Irgendwelche Ideen?
Ist Ihr Einzug korrekt? Ist die '' 'continue''' Anweisung in der Ausnahme-Suite? – wwii
Verstehst du, dass, wenn ['' continue'''] (https://docs.python.org/3/reference/simple_stmts.html#the-continue-statement) ausgeführt wird, alles, nachdem es übersprungen wurde und die nächste Iteration beginnt? – wwii
Ich dachte, es sollte mit dem Versuch/außer abgestimmt werden? Python markiert diese Einzugsstruktur nicht, aber es funktioniert nicht obv. Ich möchte fortfahren, wenn es keinen Indexfehler gibt – user95146