Python - 根据内容从输入文件中删除某些行

时间:2012-08-07 23:44:43

标签: python text

我是python的初学者,我试图通过谷歌和一些书籍来学习......我正在研究一个特定的项目并且到目前为止还没有... ... / p>

我的程序的第一部分采用输入文本文件,并扫描行中的某些数据,然后如果它不满足搜索条件,则将该行写回新文件...

我所做的一切都很难看,但它也很慢......当我在Raspberry Pi上运行时,这个部分需要4秒钟(输入文件只有1700多行)文本)

这是我的努力:

    with open('mirror2.txt', mode='r') as fo:
        lines = fo.readlines()
        with open('temp/data.txt', mode='w') as of:
            for line in lines:
                date = 0
                page = 0
                dash = 0
                empty = 0
                if "Date" in line: date += 1
                if "Page" in line: page += 1
                if "----" in line: dash += 1
                if line == "\n":   empty += 1
                sum = date + page + dash + empty
                if sum == 0:
                    of.write(line)
                else:()

我很尴尬地在公共场合展示,但我很想看到一个' pythonic'这样做的方式更优雅(更快!)

有人帮忙吗?

2 个答案:

答案 0 :(得分:2)

要回答你的问题,这是一种pythonic方式:

import re

expr = re.compile(r'(?:Date|Page|----|^$)')
with open('mirror2.txt', mode='r') as infile:
    with open('data.txt', mode='w') as outfile:
        for line in infile:
            if not expr.search(line.strip()):
                outfile.write(line)

答案 1 :(得分:0)

逐行读取文件的Pythonic方法将根据您的情况进行调整:

with open('mirror2.txt', mode='r') as fo:
    for line in fo:
        # Rest

如果这会显着加快你的程序,那就意味着Python解释器在管理ARM处理器上的内存方面做得不好。

其余部分已在评论中提及。