
昨天会上被上头知道我会Python,晚上就发了封邮件让我写脚本。过程处理其实也是非常简洁明了的,从文本文件中抽取所需要的数据,并存放结果到Excel中,原始数据就像做Hadoop练习时的气象站数据,开头有个说明,中间是数据,最后有个结尾,开头和结尾是不需要的,只取中间的数据,并且还要过滤中间的非数据项,比如说,报错信息。
由于原始文件里面有隐私数据,而且也在保密协议之内,我就意思下,自己写个范例吧:
<WUXI-IMS-666-XX>display sbc reginfo
Master spu user register infomation:
Codes: ST(Status), MUCT (MG's user count),
6(registering), 6(registered), 6(offline),
6(unknown)
------------------------------------------------------------------------------
UserName Type Device ServerIP ST MUCT TIME
------------------------------------------------------------------------------
Spu-Group: 4 Spu-Instance: 2 SC: 1
+1234567891234 SIP 66.66.66.66:6666 66.969.99.99:9696 0 - 2018/08/15 16:43:18
+2345678912345 SIP 66.99.99.99:6666 99.66.99.99:9696 1 - 2018/08/15 16:42:52
+3456789123456 SIP 66.69.69.69:6669 96.96.96.96:9696 1 - 2018/08/15 16:42:47
...
<GOOD-BYE>
其中,有效数据是:+1234567891234、66.66.66.66:6666和66.969.99.99:9696这样的一行,并且,这三个字段,不会在缺少其中一个或两个的时候单独出现,这就很好办了,直接切分出来就行了,字段的长度和格式都固定了。
import re
alist=re.findall('(\+86510\d{8})',astr)
ip=re.findall(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d]):\d{1,5}',astr,re.S)
这里加载了正则表达式的包,直接将ID和IP分别取了出来
import xlwt
while i<=len(alist)-1:
sbc_sheet.write(i,0,alist[i])
sbc_sheet.write(i,1,ip[2*i])
sbc_sheet.write(i,2,ip[2*i+1])
i=i+1
IP是成对存在的,所以奇偶数就可以区分,不用单独和ID进行绑定,或者定义二维数组。
今天还是第一次用Python往Excel里传送数据,之前为了做巡检报告,是用Python抽取Excel里的数据,往Word里面插入,不过由于Word插入内容过于单薄,没有什么格式,所以当时就放弃了。




