CCF - 201509 - 3 - 템 플 릿 생 성 시스템

1162 단어 CCF
이 세 번 째 문 제 는 또 전단 류 의 시 뮬 레이 션 이다.제목 은 템 플 릿 을 지정 합 니 다. 템 플 릿 에 따라 변 수 를 매개 변수 로 교체 하여 특정한 html 문서 문제 의 논 리 를 만 드 는 것 이 어렵 지 않 습 니 다. 시험 도 문자열 류 입 니 다. 그러나 이런 문 제 는 반드시 문제 의 세부 사항 과 세 심하게 문 제 를 풀 어야 합 니 다.이 문자열 의 첫 번 째 문 제 는 정규 표현 식 으로 문 제 를 푸 는 것 입 니 다.
생각 을 간단하게 말 하 다.한 줄 의 처리 코드, {{...} 모드 를 찾 아 이 모드 에서 인식 되 는 문자열 을 매개 변수 로 바 꿉 니 다.마지막 출력 코드
중요 한 세부 사항
  • 표 시 된 변수 가 정의 되 지 않 으 면 빈 문자열 을 생 성하 여 템 플 릿 에서 표 시 를 삭제 하 는 것 과 같 습 니 다.
  • 템 플 릿 은 재 귀적 으로 생 성 되 지 않 습 니 다.즉, 변수의 값 에 {{{VAR} 과 같은 내용 이 포함 되 어 있 으 면 더 이상 바 꾸 지 않 는 다 는 것 이다.(쉽게 말 하면 일치 하 는 모드 마다 한 번 만 바 꾸 는 것 입 니 다. 바 꾼 후에 도 {{VAR} 모드)
  • python 의 re 라 이브 러 리 에 있 는 sub 함수 (교체 함수) 로 내용 을 쉽게 교체 할 수 있 습 니 다.python 코드
    import re
    
    
    def repl(match):
        s = match.group()[3:-3]
        return vs[s] if s in vs else ''
    
    
    m, n = map(int, input().split())
    codes = []
    for i in range(m):
        codes.append(input())
    vs = {}
    
    for i in range(n):
        k, v = input().split(' ', 1)
        vs[k] = v[1:-1]
    regex_obj = re.compile(r'{{ [^{}]* }}')
    for i, line in enumerate(codes):
        codes[i] = regex_obj.sub(repl, line)
    
    for line in codes:
        print(line)
    

    좋은 웹페이지 즐겨찾기