2014-04-22 7 views
0

그래서 정규 표현식을 사용하는 로그 파서를 만들고 표준 입력 데이터를 파싱합니다. 첫 번째 라인 (머리, 만약 당신이 원한다면)은 다양한 패턴의 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 

는 청소기,이 일을 더 파이썬 방법이있을 있습니다

나는 같은 일반적인 논리를 할 수 있습니까? 나는 프로그래밍에 익숙하지 않지만 파이썬에 초보자입니다 (초급). 나는 Java, C++ 방식의 것들을 통해 내 방식을 허세 부릴 수는 있지만 더 나아 지려고 노력 중이다. 이걸 개선하는 방법에 대한 의견이 있으십니까?

"For" loop first iteration이 문제를 해결할 수있는 방법 중 하나입니다. 아마도 여기 내 질문은 표준 입력에 대한 일회 판독 방식에 대한 해답을 어떻게 적용 할 것인가?

답변

4

일예이다 유형을 기록하는 확인

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

for inputLine in infile: 
    # process the rest of the lines 
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"