String-Überprüfung optimieren
Verfasst: Sonntag 30. September 2007, 10:33
Um automatisch die nächste Seite durch Drücken der Return-Taste anzufordern, überprüfe ich eingehende Daten einer Telnet-Verbindung auf eine bestimmte Zeichenkette. Diese kann geringfügig unterschiedlich aussehen. Bisher habe ich das folgendermaßen getan:
Da mir dies zu umständlich und unübersichtlich wirkte, habe ich es jetzt über eine Regex gelöst:
Jetzt kommt es aber vor, dass das Script gelegentlich bei Benutzung dieses Codes mit einer Windows-Fehlermeldung (keine Python-Exception) abstürzt; bei identischem Aufruf direkt danach aber ohne Fehler abläuft. Meine Vermutung ist, dass die o.g. Überprüfung, die für jedes eintreffende Zeichen durchgeführt wird, als Regex deutlich langsamer geworden ist. Gibt es eine Möglichkeit, dies schneller, aber trotzdem übersichtlich hinzubekommen?
Der Versuchdürfte m.E. wohl noch langsamer sein, da unnötigerweise nicht nur das Ende des Strings, sondern der ganze String überprüft wird.
Danke
HWK
Code: Alles auswählen
self.press = 'Taste druecken ...\x1B[1;69H\x1B[0K\x1B[24;80H'
self.press1 = 'Taste druecken ..\x1B[1;69H\x1B[0K\x1B[24;80H'
self.press2 = 'Taste druecken \x1B[1;69H\x1B[0K\x1B[24;80H'
self.press3 = 'Taste druecken\x1B[1;69H\x1B[0K\x1B[24;80H'
.
.
.
elif self.CopyFlag[1].get() and (text.endswith(self.press) or
text.endswith(self.press1) or
text.endswith(self.press2) or
text.endswith(self.press3)):
Code: Alles auswählen
self.regex = re.compile('Taste druecken( \.{0,3})?'
'\x1B\[1;69H\x1B\[0K\x1B\[24;80H$')
.
.
.
elif self.CopyFlag[1].get() and self.regex.search(text):
Der Versuch
Code: Alles auswählen
elif self.CopyFlag[1].get() and (text.endswith('\x1B[1;69H\x1B[0K\x1B[24;80H') and
'Taste druecken' in text)
Danke
HWK