2010-03-11 4 views
0

J'ai un fichier texte contenant quelques lignes de texte. Un exemple est donné ci-dessous:Ajouter les lignes précédentes d'un fichier en fonction d'une condition

person1 
person2 

person3 
person4 
have paid 
--------- 

person5 
person6 

person7 
person9 

person10 
person11 
have paid 
--------- 

Chaque ligne commence par "p" ou "h" ou "-". Quand "J'ai payé" est rencontré en lisant le fichier, je veux ajouter les deux lignes précédentes dans une liste afin que je puisse différencier les gens qui ont payé et ceux qui n'ont pas payé. De l'aide?

Cheers, Chav

Répondre

1
data=open("file").read().split("\n\n") 
for rec in data: 
    if "have paid" in rec: 
     print rec.split("have paid")[0] 
0

Juste itérer le fichier mettre chaque ligne dans une liste ou une table de hachage. Ensuite, itérez la collection et pour chaque match, saisissez les deux entrées précédentes en utilisant l'index de correspondance -1 et -2.

0

Cette analyse correctement votre fichier exemple:

with open('yourfile') as f: 
    result = {'have paid': [], '': []} 
    current = [] 
    for line in f: 
     line = line.strip().strip('-') 
     if line in result: 
      result[line].extend(current) 
      current = [] 
     else: 
      current.append(line) 

print 'These have paid:', ','.join(result['have paid']) 
print 'These have not paid:', ','.join(result['']) 

Résultat:

These have paid: person3,person4,person10,person11 
These have not paid: person1,person2,person5,person6,person7,person9 
Questions connexes