2014-01-14 4 views
0

파이썬에서 로그인하기위한 래퍼를 생성했습니다 & 특정 문자열을 무시하고 싶습니다. 문자열 목록의 문자열과 일치 시키려면 단순히 if msg in FILTER 같은 것을 할 수 있다고 생각했습니다.리스트에서 문자열을 필터링하십시오.

그래서 이것을 시도했습니다.

FILTER = ["Couldn't eval", "wrapWithType"] 

class LegacyLogger(logging.Logger): 
    def legacydebug(self, msg, *args, **kwargs): 
     """ 
     Log messages. 

     @param msg: Information to log 
     @type msg: str 
     """ 
     if not any(msg in s for s in FILTER): # also tried 'if not msg in FILTER' 
      self._log(LEGACY_DEBUG_LVL, msg, '') 

    logging.Logger.legacydebug = legacydebug 

하지만 내 로그 같은 라인을 특징으로이 작동하지 않는 '수 없습니다 평가 Y 이름의 때문에'Y 그래서 문자열에 총 일치와 부분없는이 모습을 않는 '정의되지 않은' 시합?

+0

'에 대한 메시지가없는 경우 (msg는 FILTER에없는 경우 msg)' –

답변

2

내가 원하는 것은 if not any(s in msg for s in FILTER):라고 생각합니다.

+0

물론 간단합니다! –

2

당신은 그냥 내가 생각하는 그것을 반대해야, 시도 : 당신은 당신에게 어떤 경기를 포기하지 않는 필터 문자열로 전체 MSG와 일치하도록 노력하고 있었다

if any([s in msg for s in FILTER]):

.

관련 문제