Python Rueckgabeproblem

Ich bin Python-Neuling und moechte Woerter aus Woerterlisten miteinander vergleichen. Mir wurde dafuer ein Perl-Skript, das zwei Strings ueber n-grams miteinander vergleicht, sowie ein Python-Skript (PerlInterface), das eben dieses Perl-Skript aufruft, zur Verfuegung gestellt.

Ich habe nun in meinem eigenen Programm eine Schleife, die das PerlInterface mit einem Wort aus der einen Liste und nacheinander jedem Wort mit gleichem Anfangsbuchstaben aus der zweiten Liste aufruft, bis eine Uebereinstimmung auftritt.

Wenn ich dieses Programm durchlaufen lasse, schnappt es sich das erste Wort aus Liste 1, vergleicht das mit mehrern Woertern aus Liste 2, und dann, mittendrin bricht es ab. Angeblich waere die Ausgabeliste vom PerlInterface leer.
(return tmp[0].strip(´
´)
IndexError: list index out of range)
Es bricht immer beim gleichen Wort ab. Wenn ich das Skript direkt mit genau den gleichen Parametern aufrufe, funktioniert es tadellos.

Wer hat einen Tipp, woran das liegen kann? Fuer mich ist es nicht nachvollziehbar. Zumal letzte Woche, da hatte ich noch keine Bedingung angegeben, dass der Anfangsbuchstabe uebereinstimmen sollte (mit der Folge, dass ich es nach vier Stunden Laufzeit abgebrochen hatte), da lief es fehlerfrei. Da hat es schon sehr viele Woerter aus Liste 1 mit allen Woertern aus Liste 2 verglichen. Ich will aber nicht die Bedingung wieder rausnehmen, weil dann ist mir die Laufzeit einfach zu lang.

Wer weiss Rat?

Danke!
Schnoof

Hallo schnoof,
der grosse Python Experte bin zwar nicht aber vielleicht hilft Dir das weiter.
Aufgrund der Meldung würde ich auch sagen, dass die Variable leer ist.

Versuche mal den Abruch mit einem
try:

except IndexError:

zu definieren. Python bricht ja nur ab, weil nicht bekannt ist was in dieser Situation zu tun ist. Du erlaubst diesen Fehler somit und Python arbeitet weiter. Das hat bei einem meiner Programme schon funktioniert. Ich hatte eine Liste, bei der in einer Zeile kein Wert vorhanden war und Python scheinbar das nicht verarbeiten konnte.

Gruss Stefan

Danke schön.

Versuche mal den Abruch mit einem
try:

except IndexError:

zu definieren. Python bricht ja nur ab, weil nicht bekannt ist
was in dieser Situation zu tun ist. Du erlaubst diesen Fehler
somit und Python arbeitet weiter.

Das Problem hatte ich schon längst gelöst, indem ich einfach das Perl-Skript in Python implementierte.

Es war also mehr eine Prinzipienfrage, da mir die Ursache nicht klar war und immer noch nicht klar ist. Es muß irgendein Übergabeproblem sein. Denn das Skript kann eigentlich nicht „null“ zurückliefern, das Ergebnis muß immer zwischen 0 und 1 liegen. Der gleiche Algorithmus im Python-Programm eingebettet lief dann auch wieder anstandslos durch.

Bis denne
Schnoof