2017-06-05 9 views
-1

Je ne peux pas sembler ignorer la ligne- videPython - sauter des lignes vides et imprimer 3 lignes après un match

import re 

with open('list.txt', 'r+') as f: 
     line = f.readline() 
     while(line): 
     if line != ['']: 
      if " win" in line: 
       print(f.readline(),end="") 
      # 2nd line 
       print(f.readline(),end="") 
      # 3rd line 
       print(f.readline(),end="") 
      line = f.readline() 

list.txt

You tell yourself... 
That should have been my big win. 

It's a kick in the gut. 
Knowing in your heart the reason. 
While you're stuck on the outside. 
Grinning. 

Elle imprime avec comme ci-dessous instead- Lines apparaît après une ligne vide.

It's a kick in the gut. Knowing in your heart the reason.

+0

Qu'est-ce que vous essayez de faire? imprimer les 3 lignes non vides après le match? – TemporalWolf

+0

oui, 3 lignes non vides après le match – Arif

+0

Une ligne peut apparaître vide, mais chaque ligne que vous obtenez de cette façon se termine par un retour à la ligne. Vous devez strip ('str.rstrip()' devrait suffire) vos lignes avant de vérifier le contenu ... – zwer

Répondre

0

Vous devez lui dire de sauter des lignes vides lors de l'impression (les commentaires sont en ligne):

if " win" in line: 
    for _ in range(3): # do three times 
     line = f.readline() # get next line 
     # skip blank lines 
     while not line.strip(): 
      line = f.readline() 
     # Print the non-blank line 
     print(line, end="") 
line = f.readline() 
+0

désolé, n'a pas fonctionné. Toujours imprimer la ligne vide. – Arif

+0

J'ai fait un edit ... Je suppose que votre "ligne vide" n'est pas vraiment vide => 'strip()' lui permettra de faire correspondre aussi bien les lignes d'espaces blancs. – TemporalWolf

+0

oui .... alors que line.strip(): .... semble l'avoir résolu. Je vous remercie. – Arif