Python在IC中的应用,主要处理的对象以文本为主,这里简单举一个例子:
SDF后仿中往往生成的log中会有一些违例信息,Timing violation路径或者$setuphold违例,这些信息混杂在后仿log中。下面这个脚本就是简单的剔除这些信息,得到一个简化的类似前仿的log;
下面脚本参考:
用法:./simsdf_clean.py sim.log
生成简化后的sim_vio_clean.log和违例信息sim_vio.log
#!/tools/python-3.6.12/bin/python3.6
# -*- coding: UTF-8 -*-
import os
import sys
import re
output_filename='sim_vio_clean.log'
vio_filename='sim_vio.log'
vio_regex = re.compile(r".*Timing violation|setuphold.*")
lines= ""
if len(sys.argv) > 1:
file_path = sys.argv[1]
else:
print("[ERROR] ====== Please enter a file_path")
print("[Usage]: python script.py <filename> ")
sys.exit()
#vio_clean
with open(file_path, "r") as f:
for line in f:
match = vio_regex.search(line)
if match:
continue
line = re.sub(r'^\s*$', '', line)
lines += line
with open(output_filename, "w") as f:
f.write(lines)
##vio
with open(file_path, "r") as fin:
with open(vio_filename, "w") as fout:
for line in fin:
match = vio_regex.search(line)
if match:
line_vio=line
fout.write(line_vio)
其中简单说明re.compile 函数:
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。这个对象可以用于在后续的正则表达式匹配操作中重复使用。
语法格式为:
re.compile(pattern, flags=0)
pattern : 要编译的正则表达式字符串
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
re.I 忽略大小写
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M 多行模式
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和 # 后面的注释
以上就是“python文本教程(Python进行文本处理)”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11049/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取