format에 대한 parse, Jinja2에 대해서?

4978 단어 Python

parse() is the opposite of format()


format와 반대로template 문자열에서python 사전을 만드는 방법이 있다는 것을 알게 되었습니다.

여러 줄 일치


template.txt와result.txt,template가 있습니다.txt에서나는 이 부분을 사전으로 정리하고 싶다
그러나result.txt는 다른 표준 출력 등을 포함하는데 어느 정도에 비교적 크고 전체적으로template이다.txt로 설정하는 것은 매우 엄격하다
그렇지 않아도 날짜나 집행 시간의 기록처럼 집행에 따라 달라지는 줄이 있다(단, 모두 그렇게 중요한 것은 없다)
지금까지는 awk와sed 같은 조개 스크립트를 사용해서 만들었는데 매번 반수공으로 만들었어요. 좀 더 편하게 하고 싶어요.

해본 일


template.result 행txt의 각 줄에서 접으면서parse를 접고 모든 줄이 일치하는 부분을 결합시켜 추출한 인상
맵이든 Reduce든 None은 중도에 나가도 멈추지 않는다. 낭비지만 성능을 추구하지 않는다면
(쌍순환 중 회전, 이런 건 잘 못 쳐..)
from parse import *
from parse import compile

def coerce_res(a, b):
   try:
      a.named.update(b.named)
      a.fixed = a.fixed + b.fixed
      return a
   except:
      return None

def match():
   with open('template.txt', 'r') as ftemp, open('result.txt', 'r') as flog:
      templines = ftemp.readlines()
      # todo: remove leading & trailing blank lines from templines
      loglines = flog.readlines()

      for i in range(len(loglines) - len(templines) + 1):
         a = map(lambda (x,y) : parse(x,y), zip(templines, loglines[i:]))
         b = reduce(coerce_res, a)

         if(b):
            return b

print match()
# print fixed, named
요약은 보통 마지막에 하기 때문에 마지막에 하는 것이 비교적 빠르다

원하는 물건


parse는 format의 반변환이지만 진자2의 반변환 같은 게 있다면 사용자가 있을 것 같아요. 그런 게 있나요?
실행할 때의 로그 등에서 몇 줄을 정확하게 내야 할지 모르겠다.이런 걸로 기술하고, 리스트로 출력하는 등등.
실패할 때만 나타나는 로그입니다.적목으로 둘러싸기, 검측 실패 등등
(참고로 나는 진자를 사용한 적이 없어서 완전히 인상적으로 말했다.)

좋은 웹페이지 즐겨찾기