Ich versuche, eine Tab-getrennte Datei zu lesen und alle Zeichen außer Steuerzeichen zu sammeln. Wenn ein Steuerzeichen getroffen wird, sollte der Rest der Zeile ebenfalls ignoriert werden. Ich habe den folgenden Code in Python versucht, 3.5, ein mit for..else
loop:Python for..else Schleife löst immer sonst aus
import curses.ascii
input_file = ...
chars = set()
with open(input_file) as file:
for line in file.readlines():
source, target = line.split("\t")
for c in source.strip() + target.strip():
if curses.ascii.iscntrl(c):
print("Control char hit.")
break
chars.add(c)
else:
print("Line contains control character:\n" + line)
continue
print("Line contains no control character:\n" + line.strip())
Ich würde erwarten, dass dies jedes Zeichen zu prüfen, für ein Steuerzeichen zu sein, und wenn es einen Treffer (break
ausgelöst wird), fahren Sie mit Die nächste Zeile löst somit die else
/continue
Anweisung aus.
Stattdessen wird continue
immer ausgelöst, auch wenn die break
-Anweisung in der if
-Klausel nie für eine Zeile erreicht wird. Folglich wird die endgültige print
-Anweisung auch nie erreicht.
Was mache ich falsch?
die sonst nur ausgelöst, wenn Pause nicht ausgelöst wird. – thebjorn
Hmmm, ich schlage vor, lesen Sie mehr über das 'for ... else' in Python: [Wie kann ich die 'else' Anweisung in Python-Schleifen sinnvoll machen?] (Http://stackoverflow.com/questions/37642573/ how-can-i-make-sense-of-the-else-Anweisung-in-python-loops/37643358 # 37643358) –
Überprüfen Sie dies, wenn es hilft - http://StackOverflow.com/Questions/9979970/Why- does-python-use-else-nach-for-und-while-loops –