下载标准
可以选择 国家标准全文公开 (samr.gov.cn)https://openstd.samr.gov.cn/bzgk/gb/等网站下载
PDF转换
可根据自己资源选择使用夸克等工具
一定记住选择好识别区域,一般扫描软件文档部件识别能力不强
WORD转换
复制粘贴到txt就行,顺便做一下批量的识别符号和格式错误的调整
用python进行TXT转换EXCEL
需要提前安装 xlwt 和 pandas 插件
import re
#将字典导出为excel
import xlwt
import pandas as pd
def export_excel(export):
#将字典列表转换为DataFrame
pf = pd.DataFrame(list(export))
#指定生成的Excel表格名称,'./output.xlsx' 为存放文件地址
file_path = pd.ExcelWriter('./output.xlsx')
#输出
pf.to_excel(file_path,index = False)
#保存表格
file_path._save()
#以上可使用 export_excel(export) 独立执行
# 打开需要分析的TXT,"input.txt" 为分析文件地址
f = open("input.txt",encoding='utf-8' )
#通过通配符指定各层级和其他列信息,并指定需要提前部署的变量,以当前示例,层级1为必要层级,层级2主要是为了区分,进行另起一行作用,变量row是整理后的每行的信息,变量sheet是整理后的全部信息
title1 = r'(\d+)\.(\d+)(\s)'
title2 = r'(\d+)\.(\d+)\.(\d+)(\s)'
lists = ["中文名称","英文名称","缩写名","说明","数据类型及格式","约束/条件","值域","同义词","最大出现次数","计量单位","备注"]
row = {}
sheet = []
#读取一行数据
line = f.readline()
#当读取的行不为空时
while line:
#用通配符判断是否符合层级1
if re.match(title1,line):
#序号为 re.match(title1,line).group() ,本示例需去除序号
level = re.sub(r'\s',"",re.sub(title1,"",line))
else:
#用通配符判断是否符合层级2,是否为新的一行
if re.match(title2,line):
#如果开启新的一行,则将旧的一行写入,并开启新的一行
if row:
sheet.append(row)
row = {}
row["层级1"] = level
#不是新行,则持续查找并写入字典
else:
for i in lists:
if re.match(i,line):
row[i] = re.sub(r'\s',"",re.sub(i+":","",line))
line = f.readline()
#将最后一行补录
sheet.append(row)
export_excel(sheet)
f.close()