一、环境准备与依赖安装
在进行档案保管期限鉴定之前,我们需要搭建一个基于Python的自动化处理环境。这个环境将帮助我们通过关键词匹配和规则逻辑,快速批量完成鉴定工作。请确保你的操作系统已安装Python 3.8或更高版本。
打开终端或命令提示符,输入以下命令安装必要的第三方处理库。这里我们使用pandas进行数据表格处理,使用openpyxl进行Excel文件的读写操作:
```bash
pip install pandas openpyxl
```
安装完成后,为了方便管理,请在本地新建一个文件夹,命名为ArchiveAppraisal。后续所有的配置文件、数据源和脚本都将存放在此目录下。
二、制定鉴定规则配置文件
鉴定的核心在于规则的标准化。我们将不使用硬编码的方式,而是将规则外置到JSON文件中,方便后续维护和更新。在ArchiveAppraisal文件夹下,新建一个名为rules.json的文件,并复制以下完整内容:
```json
{
"permanent": {
"name": "永久",
"keywords": ["章程", "党组", "人事", "审计", "固定资产", "产权", "合同", "核心", "总账", "决算"],
"description": "反映本单位主要职能及历史面貌的重要文件"
},
"long_term": {
"name": "30年",
"keywords": ["会议纪要", "请示", "批复", "计划", "总结", "预算", "报表", "制度", "办法"],
"description": "反映本单位一般职能活动的常规文件"
},
"short_term": {
"name": "10年",
"keywords": ["通知", "函", "简报", "介绍信", "接待", "事务性", "一般性"],
"description": "辅助性、临时性的事务文件"
}
}
```
上述配置定义了三个主要维度:永久、30年和10年。每个维度下包含了具体的“关键词”列表。系统将通过扫描档案题名,自动匹配这些关键词来判定保管期限。你可以根据实际业务需求,直接修改此JSON文件中的关键词列表。
三、准备待鉴定档案数据源
为了演示实操流程,我们需要准备一份Excel格式的待鉴定数据表。在ArchiveAppraisal文件夹下,新建一个名为source_data.xlsx的Excel文件。
请确保Excel文件的第一个Sheet(Sheet1)的第一行(表头)包含以下列名:档号、题名、责任者、日期。如果表头不匹配,脚本将无法正确读取数据。
你可以填入一些测试数据,例如:
- 档号:001-2023-001
- 题名:关于修订公司财务管理制度的请示
- 责任者:财务部
- 日期:2023-05-20

注意:题名列是鉴定的关键依据,请确保该列内容填写完整且准确。
四、编写核心鉴定逻辑脚本
接下来是本次实操的核心环节。我们将编写一个Python脚本,读取规则文件和数据源,执行匹配逻辑,并输出结果。在ArchiveAppraisal文件夹下,新建appraisal.py文件,并写入以下完整代码:
```python
import pandas as pd
import json
import os
def load_rules(rule_path):
"""加载鉴定规则配置文件"""
with open(rule_path, 'r', encoding='utf-8') as f:
return json.load(f)
def match_retention(title, rules):
"""
根据题名匹配保管期限
优先级:永久 > 30年 > 10年
"""
先检查永久
for keyword in rules['permanent']['keywords']:
if keyword in title:
return rules['permanent']['name']
再检查30年
for keyword in rules['long_term']['keywords']:
if keyword in title:
return rules['long_term']['name']
最后检查10年
for keyword in rules['short_term']['keywords']:
if keyword in title:
return rules['short_term']['name']
若均未匹配,返回待定
return "待定"
def process_appraisal(data_path, rules_path, output_path):
"""执行鉴定主流程"""
print(f"正在读取数据源: {data_path}...")
try:
df = pd.read_excel(data_path)
except Exception as e:
print(f"读取Excel失败,请检查文件路径和格式: {e}")
return
检查必要列是否存在
if '题名' not in df.columns:
print("错误:Excel文件中缺少'题名'列!")
return
print("正在加载规则...")
rules = load_rules(rules_path)
print("开始执行鉴定逻辑...")
results = []
for index, row in df.iterrows():
title = str(row['题名'])
retention = match_retention(title, rules)
results.append(retention)
打印进度(可选)
if (index + 1) % 10 == 0:
print(f"已处理 {index + 1} 条数据...")
将结果写入DataFrame
df['保管期限'] = results
保存结果
print(f"正在保存结果到: {output_path}...")
try:
df.to_excel(output_path, index=False)
print("鉴定完成!")
except Exception as e:
print(f"保存文件失败: {e}")
if __name__ == "__main__":
定义文件路径
current_dir = os.path.dirname(os.path.abspath(__file__))
rules_file = os.path.join(current_dir, 'rules.json')
input_file = os.path.join(current_dir, 'source_data.xlsx')
output_file = os.path.join(current_dir, 'appraisal_result.xlsx')
执行
process_appraisal(input_file, rules_file, output_file)
```
这段代码使用了优先级匹配策略。如果题名中同时包含“制度”(30年)和“章程”(永久),系统会将其判定为“永久”,因为“永久”规则的判断逻辑在前。这符合档案鉴定中“就高不就低”的原则。
五、执行鉴定与结果导出
代码编写完毕后,即可进行实际操作。回到终端或命令提示符,进入ArchiveAppraisal目录,执行以下命令启动程序:
```bash
python appraisal.py
``>
屏幕上将显示处理进度。如果一切正常,程序结束后,文件夹内会生成一个名为appraisal_result.xlsx的新文件。打开该文件,你会发现原数据的基础上,新增了一列“保管期限”。
对于标记为“待定”的条目,说明其题名中未包含任何预定义的关键词。你需要人工复核这些“待定”档案,并根据实际情况修改rules.json,补充相应的关键词,然后重新运行脚本,直到所有档案均完成自动鉴定。
六、扩展应用:正则匹配进阶
在上述基础流程中,我们使用了简单的字符串包含匹配(in操作符)。在实际复杂业务中,可能需要匹配特定的年份格式或文号。此时,可以修改match_retention函数,引入Python的re模块进行正则表达式匹配。
例如,如果你想鉴定所有年份在“2010年以前”的档案为“永久”,可以在match_retention函数中增加如下逻辑:
```python
import re
在match_retention函数内部添加
year_match = re.search(r'(\d{4})', title)
if year_match:
year = int(year_match.group(1))
if year < 2010:
return "永久"
```
通过这种方式,你可以构建出更加精准、符合业务特性的自动化鉴定流程,彻底摆脱人工逐条翻阅的低效模式。