优化python输入循环

时间:2014-04-22 19:25:15

标签: python

所以我正在构建一个日志解析器,它使用正则表达式,并从stdin解析数据。我想要第一行(头部,如果你愿意)通过我的日志检测器算法,它从各种模式测试regex.search(es),但我不想为每一个输入行都这样做。

我可以做一些典型的逻辑,例如:

        First = True
        for inputLine in file:
            if First:
                if testLogType1(inputLine):
                    print "appears to be log 1"
                elif testLogType2(inputLine):
                    print "appears to be log 2"
                First = False
            else:
               pass

必须有更清洁,更pythonic的方式吗?我不是编程新手,但我是Python新手(排名初学者)。我可以通过旧的Java,C ++方式来解决问题,但我想要做得更好。有关如何改善这一点的任何想法?

"For" loop first iteration是解决此问题的一种可能方式。也许我的问题是如何使这个答案适应标准输入的一次性阅读?

2 个答案:

答案 0 :(得分:4)

只需阅读第一行并检查它是哪种日志类型

with file as f:
   input = f.readline()
   if testLogType1(inputLine):
       print "appears to be log 1"
   elif testLogType2(inputLine):
       print "appears to be log 2"

答案 1 :(得分:4)

E.g。

firstline = next(infile)
if testLogType1(firstline):
    print "appears to be log 1"
# etc.

for inputLine in infile:
    # process the rest of the lines