2010-03-11 63 views
0

我有一个文本文件,里面有几行1000行文本。示例如下:基于条件追加文件的前几行

person1 
person2 

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

person5 
person6 

person7 
person9 

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

每行以“p”或“h”或“ - ”开头。如果在阅读文件时遇到“付费”,我想将前两行添加到列表中,以便区分付费人员和未付费用户。任何帮助?

干杯, chav的

回答

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

只是遍历文件将每一行到列表或哈希表。然后迭代集合并为每个匹配使用匹配-1和-2的索引获取前两个条目。

0

这正确地分析您的示例文件:

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['']) 

结果:

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