python匹配效率对比及gzip用法

后仿真时会使用sdf文件确认时序信息反标到设计当中,仿真时sdf信息没有反标上,分析之后是因为有sdf文件的参数设置有问题,需要手动替换.需要替换的参数并不多,但是sdf文件比较大,有600M左右,打开编辑比较麻烦.分析之后发现,需要替换的参数可以归为一类,想到用脚本处理.
1.效率比较
a.matchobj = re.search(r’(.*)(\s+)((\d+.\d+)(\d+.\d+))(\s+)(infinity::infinity)(.*)’,de_line,re.M|re.I)
匹配的数据中有6000+万行,每行都用这个匹配,匹配之后在对此行中infinity用前面的数据替换,完成 一次这样的操作需要30+分钟;
b.matchobj1 = re.search(r’(infinity::infinity)’,de_line,re.M|re.I)
记得之前用perl脚本的时候说像.*这样的匹配先会全匹配,然后再慢慢吐出来,花费的时间比较久;由于需要替换的行并不多,满足此条件的不多,所以就想先用关键信息匹配,匹配之后再用a中的条件匹配.修改之后整个运行的时间下降到秒级.
c.gzip写入
因为sdf文件是以.gz结束的,即压缩之后的,再a和b中重新写入的时候没有用gzip,考虑到此之后,决定用gzip打开,重新运行b中的匹配,运行的时间在10分钟左右,后续在优化.
2.gzip处理
gzip打开文件时只需要在open前面加上gzip即可,gzip需要import导入
import gzip
with gzip.open("{}".format(gz_name[i]),“w”) as fw:
3.源代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值