Existe um módulo python para correspondência de regex em arquivos zip

votos
4

Tenho mais de um milhão de arquivos de texto compactados em 40 arquivos zip. Eu também tenho uma lista de cerca de 500 nomes de modelos de telefones. Eu quero descobrir o número de vezes que um determinado modelo foi mencionado nos arquivos de texto.

Existe algum módulo python que pode fazer um jogo de regex nos arquivos sem descompactá-lo. Existe uma maneira simples de resolver este problema sem descompactar?

Publicado 18/08/2008 em 08:41
fonte usuário
Em outras línguas...                            


4 respostas

votos
9

Não há nada que irá automaticamente fazer o que quiser.

No entanto, há um módulo zipfile python que vai fazer isso fácil de fazer. Veja como iterar sobre as linhas no arquivo.

#!/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
Respondeu 18/08/2008 em 09:19
fonte usuário

votos
0

Não é (pelo menos teoricamente) possível, para ler na codificação Huffman do ZIP e, em seguida, traduzir o regexp no código Huffman? Isso pode ser mais eficiente do que o primeiro-de comprimir os dados, em seguida, executar o regexp?

(Nota: Eu sei que não seria tão simples assim: você também tem que lidar com outros aspectos do layout ZIP-file codificação, estruturas de bloco, back-referências, mas imagina-se este poderia ser bastante leve.)

EDIT: Note também que é provavelmente muito mais sensato usar apenas a zipfilesolução.

Respondeu 03/09/2008 em 15:42
fonte usuário

votos
0

Para acessar o conteúdo de um arquivo zip você tem que descompactá-lo, embora o pacote zipfile torna esta bastante fácil, como você pode descompactar cada arquivo dentro de um arquivo individualmente.

módulo zipfile Python

Respondeu 18/08/2008 em 09:10
fonte usuário

votos
0

Você poderia percorrer os arquivos zip, leitura de arquivos individuais usando o módulo zipfile e executando o seu regex sobre aqueles, eliminando para descompactar todos os arquivos de uma vez.

Estou bastante certo de que você não pode executar um regex sobre os dados compactados, pelo menos não de forma significativa.

Respondeu 18/08/2008 em 09:06
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more