많은 수의 거대한 XML 파일 (최대 1GB)을 파싱 중이며 주어진 필드에 대해 약 700 개의 가능한 일치 목록을 상호 참조하고 있습니다. 일치하는 항목을 찾으면 필드 자체의 텍스트를 사용하는 대신 내 목록에서 일치하는 항목을 찾고 싶습니다. 파이썬에서 조건부 반복에 액세스
나는<-- outside loops iterating over outer layer tags tags --> if any(re.search(s, parsedOutTag.text) for s in preCompiledRegexList): <-- checking innner layer tags for additional content-->
내가 조건이 만족 될 때 직접하면서 반복 s
에 액세스하는 방법을 궁금 내 코드에 다음 줄을 가지고있다. 나는 현재 내가해야 할 일을 매우 해킹하고있다.
나는 그것이 분명하다는 것을 인정해야한다. Stack Overflow에 대한 다른 질문의 효율성을 위해이 라인을 채택 했으므로 모든 세부 사항을 정말로 알지 못한다.
나는'if any()'문장 밖에서'for' 루프를 제거함으로써 계산상의 효율성을 잃지 않습니까? – Constantine
나는 너를 믿을 수 없다. 일치하는 항목을 모두 처리하는 경우'any' 호출보다 오래 걸리는 것처럼 보일 수 있지만 언급 한 바와 같이'any'는 첫 번째 값의 처리를 중지하기 때문에 'True'입니다. –
아니요, 정규식 목록의 모든 항목을 처리하지 않습니다. 나는 목록에서 단 하나의 매치가있을 것이라고 기대하고있다. – Constantine