2016-08-04 49 views
0

Ich habe einen Code, der durch jede Zeile in einer Datei geht und jede Zeile in Wörter aufteilt und das erste Wort in ein Set einfügt.Wie setzt man Bedingungen in das Verständnis?

test = set([ 
    line.rstrip().split()[0].strip() 
    for line in codecs.open(filepath, 'r', 'utf-8') 
    if len(filepath) > 0 
]) 

Mein Problem ist, dass manchmal die Linie ein leerer String sein und aus irgendeinem Grund ein

index out of range error 

auftritt. Wie kann ich das beheben, so dass ich einfach die Zeile überspringen kann, in der die Fehler aufgetreten sind, und mit der nächsten Zeile fortfahren?

Antwort

0

Ich denke, du willst das?

test = set([ 
    line.rstrip().split()[0].strip() 
    for line in codecs.open(filepath, 'r', 'utf-8') 
    if len(line) > 0 
]) 

(hatten Sie filepath statt line.)

du wahrscheinlich brauchen, obwohl, da eine leere Zeile wirklich ein "\ n" wird sein:

if len(line.rstrip()) > 0 
+0

Dank @smarx. Das habe ich tatsächlich gemacht. Ich habe es der Dateipfadprüfung hinzugefügt, da ich auch den Dateipfad überprüfen muss. wenn len (line)> 0 und len (dateipfad)> 0 aber da war immer noch ein fehler. Ich habe das noch nicht ausprobiert: wenn len (line.rstrip())> 0 – kurt

+0

@ user3009947 Also funktioniert dein Code jetzt? Wenn nicht, teile bitte deinen aktuellen Code und den genauen Fehler/Stack-Trace, den du gerade siehst. – smarx

+0

Oh, sorry, habe gerade deine Bearbeitung gesehen. Bitte versuchen Sie 'len (line.rstrip())> 0' und lassen Sie mich wissen, ob das das Problem löst. – smarx