zip 파일에 정규식 일치를 위한 Python 모듈이 있습니까?
-
08-06-2019 - |
문제
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 패키지를 사용하면 아카이브 내의 각 파일을 개별적으로 압축을 풀 수 있기 때문에 이 작업이 매우 쉽습니다.
ZIP의 허프만 코딩을 읽은 다음 정규식을 허프만 코드로 변환하는 것이 (적어도 이론적으로는) 가능하지 않습니까?먼저 데이터 압축을 풀고 정규식을 실행하는 것보다 이것이 더 효율적일까요?
(메모:나는 그것이 그렇게 간단하지 않을 것이라는 것을 알고 있습니다.파일 레이아웃, 블록 구조, 역참조 등 ZIP 코딩의 다른 측면도 처리해야 하지만 이는 상당히 가벼울 수 있다고 생각합니다.
편집하다:또한 다음을 사용하는 것이 훨씬 더 합리적일 수 있습니다. zipfile
해결책.