所以我正在构建一个日志解析器,它使用正则表达式,并从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是解决此问题的一种可能方式。也许我的问题是如何使这个答案适应标准输入的一次性阅读?
答案 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