|
发表于 2023-3-8 14:16:32
|
显示全部楼层
本楼为最佳答案
 这种半结构化的数据可以用到谷歌开源的一个 python 模块 textfsm,
首先要安装 textfsm:
然后需要操作 excel 表格还得安装 openpyxl:
gitlog.txt:
- GIT_LOG_START
- CommitId:6758e44d402109f6b97299f844c55a38fcf67e49
- Project:realtek/2885N/kernel/android/R/device/xxx
- Branch:2885N
- 仓库类型:系统修改
- 【解决问题】:新增W8DP lunch
- 【提交分类】:新增lunch
- 【测试注意】:无
- 【测试结果】:自测通过
- 【问题单号】:无
- 【操作类型】:新增
- 【重要程度】:重要
- 【影响产品】:W8DP
- Change-Id: I6b90a261e734f16841306202d6d321e0017d2f7d
- 提交人:liyuping
- 提交日期:Thu Feb 23 16:11:39 2023 +0800
- GIT_LOG_END
- GIT_LOG_START
- CommitId:d155ebb5f5ee794f5868818d09cc4ed98d9c6cee
- Project:realtek/2885N/kernel/android/R/device/xxx
- Branch:2885N
- 仓库类型:系统修改
- 【解决问题】:xxx不进行默认设置zram大小
- 【提交分类】:/
- 【测试注意】:/
- 【测试结果】:/
- 【问题单号】:/
- 【操作类型】:/
- 【重要程度】:/
- 【影响产品】:2885N
- Change-Id: I9fc7fa91921881ea0093c2195841e5dedc4307db
- 提交人:liyuping
- 提交日期:Mon Feb 20 10:15:29 2023 +0800
- GIT_LOG_END
复制代码
根据 git_log.txt 的结构按照 textfsm 的语法规则写一个模板出来,我这里给你写好了
gitlog.template:
- Value CommitId (\w+)
- Value Project (.+)
- Value Branch (\w+)
- Value RepositoryType (.+)
- Value SolveProblem (.+)
- Value TestAttention (.+)
- Value TestResult (.+)
- Value QuestionNO (.+)
- Value OpType (.+)
- Value Importance (.+)
- Value ImpactPro (.+)
- Value Submitter (.+)
- Value EntryTime (.+)
- Start
- ^GIT_LOG_START -> Record GitLog
- ^GIT_LOG_END
- GitLog
- ^CommitId:${CommitId}
- ^Project:${Project}
- ^Branch:${Branch}
- ^仓库类型:${RepositoryType}
- ^【解决问题】:${SolveProblem}
- ^【提交分类】:.*
- ^【测试注意】:${TestAttention}
- ^【测试结果】:${TestResult}
- ^【问题单号】:${QuestionNO}
- ^【操作类型】:${OpType}
- ^【重要程度】:${Importance}
- ^【影响产品】:${ImpactPro}
- ^Change-Id: \w+
- ^提交人:${Submitter}
- ^提交日期:${EntryTime} -> Start
复制代码
以下是参考代码,解释写在注释里了
gitlog.py:
- import textfsm # 导入textfsm模块
- import openpyxl # 导入openpyxl模块
- # 打开模板文件
- template_file = open("gitlog.template")
- # 创建一个TextFSM对象,传入模板文件对象
- fsm = textfsm.TextFSM(template_file)
- # 关闭模板文件
- template_file.close()
- # 打开要解析的文本文件
- text_file = open("gitlog.txt")
- # 读取文本内容
- text_data = text_file.read()
- # 关闭文本文件
- text_file.close()
- # 使用TextFSM对象的ParseText方法,传入文本内容,返回一个列表
- table = fsm.ParseText(text_data)
- # 创建一个工作簿对象
- wb = openpyxl.Workbook()
- # 获取当前活动的工作表对象
- ws = wb.active
- # 给工作表添加表头
- ws.append(
- ["commitid", "Project", "Branch",
- "仓库类型(配置/分支/芯片平台/机型/配屏/上层应用等)",
- "解决问题", "测试注意", "测试结果", "问题单号",
- "操作类型", "重要程度", "影响产品", "提交人", "合入时间"]
- )
- # 把从 txt 文件解析出来的数据添加到工作表中
- for row in table:
- ws.append(row)
- # 保存工作簿到文件
- wb.save("gitlog.xlsx")
复制代码
运行此python文件即会生成一个 gitlog.xlsx 的 excel 表格
打包好的文件:
gitlog.rar
(1.84 KB, 下载次数: 1)
|
|