首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据加工字符串打印所有行

根据加工字符串打印所有行
EN

Stack Overflow用户
提问于 2012-12-04 16:54:26
回答 1查看 35关注 0票数 1

我有一个名为new的文件,其中包含以下数据:

代码语言:javascript
复制
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、日期、状态和值(1111,2012-5-12,new,p0)...在这个文件中,我必须打印所有状态值为“new”的ids的数据。我的输出应该是这样的:

代码语言:javascript
复制
1111
2012-5-12
new
p0
3333
2012-15-12
new
p0
4444
2012-5-11
new
p1

我尝试使用以下代码:

代码语言:javascript
复制
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)=======

代码语言:javascript
复制
p0
2012-5-11
new
p1
0 

(new1)===========

代码语言:javascript
复制
p1
2011-5-12
old
p0  

程序将获取前4行并将其写入new1。相应地,它将搜索状态== "new“,如果找到,则将所有四行写入new2,否则再次读取下四行,直到文件的长度。

问题:我没有在new2中获取正确的数据,它应该包含这样的数据:

代码语言:javascript
复制
1111
2012-5-12
new
p0
3333
2012-15-12
new
p0
4444
2012-5-11
new
p1
EN

回答 1

Stack Overflow用户

发布于 2013-07-28 00:35:18

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13699110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档