我是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'这样做的方式更优雅(更快!)
有人帮忙吗?
答案 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处理器上的内存方面做得不好。
其余部分已在评论中提及。