常用的三个模块:

1、正则匹配 re;

2、配置文件解析 configparser;

3、excel 持久化 xlsxwriter;

做个集锦备忘,同时实现了简单的表名规则引擎。

import configparser

import re

import xlsxwriter

import time

# 命名规则匹配类

class MyRule:

_rule_dict = None

# 规则由两个维度 bk/fc 进行索引

def __init__(self, bk_list, fc_list):

self._rule_dict = dict()

for bk in bk_list:

self._rule_dict[bk] = dict()

for fc in fc_list:

self._rule_dict[bk][fc] = list()

# 注册规则,支持模糊注册

def reg(self, rule, bk=None, fc=None):

if bk is None and fc is not None:

for _bk in self._rule_dict.keys():

self._rule_dict[_bk][fc].append(rule)

elif bk is not None and fc is None:

for _fc in self._rule_dict[bk].keys():

self._rule_dict[bk][_fc].append(rule)

elif bk is None and fc is None:

for _bk in self._rule_dict.keys():

for _fc in self._rule_dict[_bk].keys():

self._rule_dict[_bk][_fc].append(rule)

elif bk is not None and fc is not None:

self._rule_dict[bk][fc].append(rule)

# 正则表达式,规则匹配

def match(self, bk, fc, s):

for r in self._rule_dict[bk][fc]:

res = re.fullmatch(r, s)

if res is None:

return False, r

elif res.string != s:

return False, r

return True, None

# excel 持久化类

class MyXlsx:

_workbook = None

def __init__(self, file_name):

self._workbook = xlsxwriter.Workbook(file_name) # 创建新的 xlsx 文件,如果文件已存在,内容会被清空

def write_xlsx(self, sheet_name, title, data):

worksheet = self._workbook.add_worksheet(sheet_name) # 添加新的 sheet

worksheet.write_row('A1', title) # 添加标题列

i = 1

for row in data:

worksheet.write_row(i, 0, row) # 写入一行

i += 1

def close(self):

self._workbook.close()

def main():

cf = configparser.ConfigParser()

cf.read('table_name_std.ini') # 读取配置文件

bk_list = cf.sections() # 读取分区标识,即: [xxxx] 的内容

res_xls = MyXlsx(time.strftime('命名规范%Y%m%d.xlsx'))

title = ('总表数', '英文表名异常数量', '英文表名异常比例')

rule_en = MyRule(bk_list, fc_pro) # 英文表名规则

# 英文名:后缀规则

rule_en.reg('.*_(' + '|'.join(pt_sign) + ')$')

result_total_data = []

result_detail_data = {}

for bk in bk_list:

fc_list = cf.options(bk) # 分层列表

table_cnt = table_en_fail_cnt = table_ch_fail_cnt = 0

for fc in fc_list:

project_name = cf.get(bk, fc)

tables = list_tables(project=project_name)

for table in tables:

res_en, r_en = rule_en.match(bk, fc, table.name)

res_ch, r_ch = rule_ch.match(bk, fc, table.comment)

table_en_fail_cnt += 0 if res_en else 1

table_ch_fail_cnt += 0 if res_ch else 1

table_cnt += 1

print(bk, table_cnt, table_en_fail_cnt, table_ch_fail_cnt)

result_total_data.append((bk, table_cnt,

table_en_fail_cnt, '%.2f%%' % (table_en_fail_cnt/table_cnt),

table_ch_fail_cnt, '%.2f%%' % (table_ch_fail_cnt/table_cnt)))

res_xls.write_xlsx('概括', title, result_total_data)

res_xls.close()

if __name__ == '__main__':

main()

re python 引擎_Python-表名规则引擎-军刀集锦- re / configparser / xlsxwriter相关推荐

  1. 【规则引擎】一、规则引擎简介

    (第一章规则引擎学习入门之规则引擎简介)# 系列文章目录 规则引擎简介 前言 一.为什么要使用规则引擎? 1.不使用规则引擎的规则执行现状 2. 规则引擎优点 二.规则引擎的功能 三.规则引擎的分类实 ...

  2. 公司 表名规则 TN基础表 TR关系表 TL定义表

    公司 表名规则  TN基础表  TR关系表  TL定义表

  3. 规则引擎一:IBM规则引擎 ODM入门

    转自http://www.cnblogs.com/soul-tap/p/4956052.html IBM规则引擎(ODM)入门系列一(1):如何编写规则项目 最近,因项目需要,研究使用IBM的规则引擎 ...

  4. mysql存储引擎静态表_MySQL存储引擎(表类型)的选择

    一.MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等.MySQL5.0支持的存储引擎包括MyI ...

  5. 规则引擎 java 设计_规则引擎设计

    最近用到了规则引擎 ,简单做一个总结. 规则,说白了,就是,现状(fact)怎么样,如果(condition)怎么样,那么(action)怎么样. 规则引擎使用了rete算法,我这边使用的是drool ...

  6. mysql 规则引擎_为什么使用规则引擎?

    一天,朱斯参加了一场code Review研讨会.会上的一群人正在讨论着如何对祖传代码进行变更,大家你一言,我一语,场面十分热闹! 突然,只见人群中的一个人满面愁容,说道:"昨天在项目中看到 ...

  7. java开源的规则引擎_Java常用的规则引擎

    概述 在本文中,我们将介绍Java中一些最受欢迎的规则引擎. 规则引擎简介 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编 ...

  8. java开发引擎_【java规则引擎】java规则引擎搭建开发环境

    Drools and jBPM consist out of several projects:(Drools软件包提供的几个部分的功能) ------------------------------ ...

  9. java 规则引擎_【java规则引擎】java规则引擎搭建开发环境(示例代码)

    Drools and jBPM consist out of several projects:(Drools软件包提供的几个部分的功能) ------------------------------ ...

最新文章

  1. 国标流媒体H5实现无插件视频监控按需直播
  2. 【Python学习】 - PIL - 各种图像操作
  3. python中mysqldb模块_python中MySQLdb模块用法实例
  4. 爱站CMS综合管理系统源码php版
  5. seg代码配置的踩坑记录
  6. creat是什么意思中文翻译_英语create的中文是什么意思
  7. 使用Faster_RCNN做文本检测
  8. python模块 包 文件_Python临时文件模块
  9. 【虚拟机】关于 virtualbox 和 vmware workstation 对比的个人见解
  10. 图书馆占座系统(五)
  11. 微信小程序---详情页
  12. DW_axi_dmac控制器(概述)
  13. 恐怖系列丨互联网幕后攻防:咳血的独角兽二
  14. Linux线程ID与内核LWP的关系
  15. 这猪蹄是人类能吃完的?
  16. JAVA Swing + Jdbc 实现宿舍管理系统
  17. 悦然插件资源分享:WooCommerce Order Details订单详情插件
  18. QT/C++从新手到老手系列之QT中级篇-李浩林-专题视频课程
  19. google+teachable_machine+树莓派4B
  20. C语言程序设计谭浩强(第四版)部分课后习题作答——第六章-输出杨辉三角,输出魔方阵

热门文章

  1. 亚马逊卖家如何正确测评?
  2. 2023年京东618什么时候开始?618年中大促活动攻略
  3. SVG路径描边动画效果的实现
  4. ESP32读取甲醛传感器数据
  5. ToString的用法
  6. 最优控制和轨迹规划学习笔记 包含多个实际案例 主要思路是使用优化算法来找到车辆的最佳路径
  7. SR-TE Policy(思科)----explicit path 实验
  8. 云存储,为 AI 创新提速
  9. C++实现CRC冗余校验中FCS检测序列的生成
  10. excel poi导出总结