문제

40개의 zip 파일로 압축된 백만 개가 넘는 텍스트 파일이 있습니다.나는 또한 약 500개의 휴대폰 모델명 목록을 가지고 있습니다.텍스트 파일에서 특정 모델이 언급된 횟수를 알고 싶습니다.

압축을 풀지 않고 파일에 대해 정규식 일치를 수행할 수 있는 Python 모듈이 있습니까?압축을 풀지 않고 이 문제를 해결할 수 있는 간단한 방법이 있습니까?

도움이 되었습니까?

해결책

원하는 대로 자동으로 수행되는 것은 없습니다.

그러나 이를 쉽게 수행할 수 있는 Python zipfile 모듈이 있습니다.파일의 행을 반복하는 방법은 다음과 같습니다.

#!/usr/bin/python

import zipfile
f = zipfile.ZipFile('myfile.zip')

for subfile in f.namelist():
    print subfile
    data = f.read(subfile)
    for line in data.split('\n'):
        print line

다른 팁

zip 파일을 반복하면서 zipfile 모듈을 사용하여 개별 파일을 읽고 해당 파일에 대해 정규식을 실행하면 모든 파일의 압축을 한 번에 풀 수 있습니다.

적어도 의미 있게는 압축된 데이터에 대해 정규식을 실행할 수 없다고 확신합니다.

zip 파일의 내용에 접근하려면 압축을 풀어야 하지만, zipfile 패키지를 사용하면 아카이브 내의 각 파일을 개별적으로 압축을 풀 수 있기 때문에 이 작업이 매우 쉽습니다.

Python zip 파일 모듈

ZIP의 허프만 코딩을 읽은 다음 정규식을 허프만 코드로 변환하는 것이 (적어도 이론적으로는) 가능하지 않습니까?먼저 데이터 압축을 풀고 정규식을 실행하는 것보다 이것이 더 효율적일까요?

(메모:나는 그것이 그렇게 간단하지 않을 것이라는 것을 알고 있습니다.파일 레이아웃, 블록 구조, 역참조 등 ZIP 코딩의 다른 측면도 처리해야 하지만 이는 상당히 가벼울 수 있다고 생각합니다.

편집하다:또한 다음을 사용하는 것이 훨씬 더 합리적일 수 있습니다. zipfile 해결책.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top