我有一个新文件名,其中包含以下数据:
1111
2012-5-12
new
p0
2222
2012-10-12
old
p1
3333
2012-15-12
new
p0
4444
2012-5-11
new
p1
5555
2011-5-12
old
p0
在这个文件中,每个id都有以下数据,如id,date,status和value(1111,2012-5-12,new,p0).... 在这个文件中,我必须打印所有状态值为“new”的id的数据。 我的输出应该是这样的:
1111
2012-5-12
new
p0
3333
2012-15-12
new
p0
4444
2012-5-11
new
p1
我尝试使用以下代码:
f1 = open('new','r')
output = open('new1','w')
lines = f1.readlines()
n =0
for i, line in enumerate(lines):
if n > 3:
output.close()
file1=open('new1','r')
file2=open('new2','w')
lines= file1.readlines()
status = lines[2].strip()
if status == 'new':
for line in lines:
file2.write(line)
output = open('new1','w')
output.write(line)
n = 1
else:
output.write(line)
n = n + 1
new2和new1有以下输出: (NEW2)=======
p0
2012-5-11
new
p1
0
(名new1)===========
p1
2011-5-12
old
p0
程序将占用前4行并将其写入new1 .. 因此,它将搜索status ==“new”如果找到然后将所有四行写入new2另外明智再次读取下一行四行到文件的长度..
问题:我没有在new2中使用正确的数据,它应该包含如下数据:
1111
2012-5-12
new
p0
3333
2012-15-12
new
p0
4444
2012-5-11
new
p1
答案 0 :(得分:0)
with open('new', 'r') as f:
lines = f.readlines()
data = [lines[4 * i:4 * i + 4] for i in range(len(lines) / 4)]
new_data = [d for d in data if d[2] == 'new']
with open('new1', 'w') as f:
for d in new_data:
f.write('\n'.join(d))