🌟🌟🌟🌟起因
由于进行某平台的告警分析,一些恶意文件攻击,要整合资料,其中要单独列出恶意邮件发件人和主题,然而这些东西全在一个报文里,数量又很大,一个一个粘就有点离谱了。
为了提高生产力写了个简单的脚本,功能很简单,正则匹配也不是很完善,还有很大优化空间,可根据需要自行优化,我主要是图快。
🌟🌟🌟说明
1、将需要进行提取的原文件保存至.txt文件,其他文件也可以,网上搜一下其他文件python读取和写入的方法就可以了;
2、根据需要新建一个或多个提取后保存的txt文件;
3、根据需要更改正则匹配;(我在跑之前,对原数据提前进行了处理,在excel里将一些特殊符号都替换成了空,不替换的话网上搜一下特殊字符的正则匹配方法就可以了)
🌟🌟脚本代码
import re
##打开要提取的源文件,并逐行读取
with open ('/Users/huangxiaohan/Desktop/script/匹配mail/mail.txt',encoding='utf-8') as f:
data=f.readlines()
##打开提取之后要保存的文件,一个保存邮件主题,一个保存邮件收件人
mailout_file=open(r'/Users/huangxiaohan/Desktop/script/匹配mail/mailout.txt','w')
mailout2_file=open(r'/Users/huangxiaohan/Desktop/script/匹配mail/mailout2.txt','w')
##定义两个正则匹配,可以查询正则匹配自行优化,我比较赶时间,写的随便
pattern1 = re.compile('(?<=[题]).*?(?=[相])')
pattern2 = re.compile('(?<=[人]).*?(?=[日])')
##读取源文件逐行进行正则匹配,并将list格式去掉中括号
for content1 in data: #逐行读取
result1 = re.findall(pattern1, content1)
result1 = ','.join(str(i) for i in result1)
print(result1)
mailout_file.write(result1)
mailout_file.write("\n")
for content2 in data: #逐行读取
result2 = re.findall(pattern2, content2)
result2 = ','.join(str(i) for i in result2)
print(result2)
mailout2_file.write(result2)
mailout2_file.write("\n")