특정 발생에 대한 로그 파일을 구문 분석하려고합니다. 로그 파일이 커질 수 있기 때문에 우리가 필요로하는 어플리케이션에 관심이없는 라인을 걸러 낼 필요가 있습니다. 아이디어는 내가 찾고자하는 4 개 또는 5 개의 문자열로 하나의 목록을 만든 다음 로그 파일이 보존 된 행을 포함하는 다른 목록의 행 위로 반복하는 것입니다.목록의 요소가 파이썬 목록의 요소에 있는지 확인하십시오.
로그 파일은 프록시의 로그이며 요청이 어디에서 왔는지 뷰를 얻는 데 사용됩니다 줄에서 "찾기/찾기"를 찾으면 첫 번째 줄이기가 쉬워요. 그 안에.
with open('logfile', 'r') as f:
for line in f:
if "GET /" in line:
lines.append(line)
목록 '라인'의 요구가 그때 지능형리스트를 시도했지만 문제가 해결되지 않았다
l1 = ['/Treintickets/aankopen', '/booking/Tickets', '/Acheter/Billets', ...]
URL에 문자열의 숫자 중 하나를 포함하는 라인에 감소 될 :
result = [l for l in lines if l1 in l]
'l1'의 각 구성원에 대한 큰 목록 줄을 반복하지 않아도 작동 할 수있는 방법이 있습니까? 당신은 이것에 대한 정규식을 사용하는 것이 좋습니다,
result = [line for line in lines if any(substring in line for substring in l1)]
또는 :
l1에는 4 개 또는 5 개의 문자열 만 있고 중복되지 않습니다. 기본적으로 모두 다른 언어로 동일합니다. 그것을 세트로 바꾸는 것의 개선점은 무엇입니까? – Erwin
만약 당신이 wim의 대답을 사용하고 있다면, (나는 다소 질문을 잘못 읽었습니다.) 요점은 없습니다. –