python grep pipe 直接读文件 效率_Python读取文件直到匹配,读取直到下一个模式

这篇博客讨论了如何使用Python高效地读取大型文件,尤其是寻找特定模式并打印其后续行。作者遇到的问题是,当文件大小达到10GB时,原始代码效率低下。他们通过使用正则表达式`re.match`来匹配模式,并展示了如何通过`grep`和`pipe`提升性能,但遇到了在Python 2.4.3中如何将`grep`与正则结合的挑战。最终,通过结合`os.system`和`grep`,将处理时间从约65秒降低到约3.5秒。
摘要由CSDN通过智能技术生成

Python2.4.3

我需要读一些文件(可以大到10GB)。我需要它做的是遍历文件,直到它匹配一个模式。然后打印该行及其后的每一行,直到它与另一个模式匹配为止。这时,继续读取文件,直到下一个模式匹配为止。

例如。文件包含。---- Alpha ---- Zeta

...(text lines)

---- Bravo ---- Delta

...(text lines)

等等

如果匹配——阿尔法——泽塔,它应该打印——阿尔法——泽塔以及之后的每一行,直到它遇到——布拉沃——德尔塔(或者除了——阿尔法——泽塔以外的任何东西),它会一直读到匹配——阿尔法——泽塔为止。

下面匹配我要查找的内容-但只打印匹配的行-而不是后面的文本。

你知道我在这件事上做错了什么吗?import re

fh = open('text.txt', 'r')

re1='(-)' # Any Single Character 1

re2='(-)' # Any Single Character 2

re3='(-)' # Any Single Character 3

re4='(-)' # Any Single Character 4

re5='( )' # White Space 1

re6='(Alpha)' # Word 1

re6a='((?:[a-z][a-z]+))' # Word 1 alternate

re7='( )' # White Space 2

re8='(-)' # Any Single Character 5

re9='(-)' # Any Single Character 6

re10='(-)' # Any Single Character 7

re11='(-)' # Any Single Character 8

re12='(\\s+)' # White Space 3

re13='(Zeta)' # Word 2

re13a='((?:[a-z][a-z]+))' # Word 2 alternate

rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12+re13,re.IGNORECASE|re.DOTALL)

rga = re.compile(re1+re2+re3+re

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值