首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中筛选出两个时间戳之间的行

如何在python中筛选出两个时间戳之间的行
EN

Stack Overflow用户
提问于 2014-04-11 12:15:48
回答 2查看 1.3K关注 0票数 1

我有以下问题,我有一个日志文件,我想逐行读取,但为了减少行,我想过滤掉行之间的两个时间戳!

在awk中的示例:

代码语言:javascript
复制
find all between two patterns: pattern1 = 2012-10-23 14, pattern2 = 2012-10-23 16
awk '/2012-10-23 14/{P=1;next}/2012-10-23 16/{exit} P' server.log

或者用白鹭和一个图案:

代码语言:javascript
复制
egrep "2012-10-23 (1[4-6]:[0-5][0-9])" server.log

上面的awk线只给出了这两个时间戳之间的线。

我如何在python中不执行任何系统命令或awk、grep.,但只使用python正则表达式来实现它?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-11 12:31:31

从您的awk代码中一对一地翻译:

代码语言:javascript
复制
with open('yourFile') as f:
    lines = f.read().splitlines()

for l in lines:
    if l.startswith('2012-10-23 14'):
        p=1
    elif l.startswith('2012-10-23 16'):
        p=0
        break
    if p: print l

这将在第一行以2012-10-23 14 ...匹配开始时启动输出,并在第一行以2012-10-23 16..匹配开始时停止打印。(与您的awk代码相同)

票数 0
EN

Stack Overflow用户

发布于 2014-04-11 14:05:23

我认为,只有假设时间戳位于行的开头,@Kent帖子才会起作用。使用AWK / egrep代码,您需要一些更通用的内容。

以下代码应该有效:

  • 独立于行内搜索模式所在的位置。
  • 独立于日志中的行是否正确排序(尽管这是高度可假设的;-)
  • 作为无阻塞的生成器,在没有不必要的内存分配的情况下,在处理结果时产生结果。
  • 有更多的通用代码构造,以防需要进一步修改。 导入re log_lines(yourFile,regexp):rxp = re.compile(regexp),打开(YourFile)为f: yourFile in f.readlines():if rxp.search( line ):log_lines中线条的屈服线(“yourFile”,“2012-10-23-14-6”):打印行

与蟒蛇呆在一起,这是有利的;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23012287

复制
相关文章

相似问题

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