Em um script minúsculo:
#!/usr/bin/env python3
import sys
# list domains to be removed
rm = [
'gmail.com', 'hotmail', 'yahoo', 'aol', 'rediffmail.com',
'msn', 'outlook', 'inbox.com', 'icloud.com', 'mail.com',
'zoho.com', 'yandex', 'live'
]
# read the file per line
for l in open(sys.argv[1]):
# see if not any of the @domains is in the line
if not any([d in l for d in ["@"+d for d in rm]]):
# then print the line
print(l.strip())
Para usar
- Copie o script em um arquivo vazio como
filter_doms.py
-
Execute-o com o arquivo de entrada como argumento:
python3 /path/to/filter_doms.py input_file > output_file
Explicação
Eu acredito que o código e os comentários se explica:)
Conforme solicitado em um comentário, uma versão para ignorar erros de decodificação:
#!/usr/bin/env python3
import sys
import codecs
rm = [
'gmail.com', 'hotmail', 'yahoo', 'aol', 'rediffmail.com',
'msn', 'outlook', 'inbox.com', 'icloud.com', 'mail.com',
'zoho.com', 'yandex', 'live'
]
with codecs.open(sys.argv[1], "r", encoding="utf-8", errors="ignore") as read:
for l in read:
if not any([d in l for d in ["@"+d for d in rm]]):
print(l.strip())
O uso é exatamente semelhante