附条件生成判决的Python方法

查看 28|回复 1
作者:poind   
一、背景
工作中有大量制作文书的需求,需要判断的条件也很多。每天现写,还是扣脑壳。
就考虑通过制作模板,传入指定参数的方式,生成对应文书,然后校对修改的方式减少工作量。
二、方案
目前有Office的邮件合并功能,docx2python,python-docx,docxtpl。这几种方法可以实现。
对比
邮件合并功能:需要创建“域”,在‘’域名‘’选中MergeField,然后以书名号《》作为区域;可以通过doc-mailmerge库来实现,操作多有点复杂。但可以避免文书的格式调整,也可以实现条件判断。
docx2python:挺方便,但是条件判断要额外写在代码中,也要扣点脑壳。最抠脑壳的还是文书的格式调整了。
python-docx:方便,条件判断方面同上。
docxtpl:内置了jinja2功能,支持在模板中预先内置一些条件,也可在代码中添加判断代码,进行增强。还可以避免令人头疼的文书格式调整问题。
这里使用docxtpl来解决需求,该模块可以加入条件判断,来满足工作中对于一些条件的判断,也可进行增强。
主要原因是,能够把主要精力放在模板的调整上,改动方便、直观,避免模板的逻辑漏洞,等工作量减少后再专门更新,提高生成质量。工作量太大,只能先假于物,后精于技。
三、思路
1.导入 docxtpl模板
    pip install docxtpl
    #后续通过Excel导入参数的时候,可以安装Excel相关库
2.写入代码
    from docxtpl import DocxTemplate
    #模板保存地址
    path = 'C:/Users/PycharmProjects/pythonProject1/Find_Word.docx'
    #指定保存文档
    PATH = 'C:/Users/PycharmProjects/pythonProject1/'
    参数字典
    data_dic = {
    '被告名称':'张三',
    '被告生日':'1999年9月9日',
    '民族':'汉族',
    '住址':'安徽省南京市',
    '年利率':'11',
    'age':98,
    'S':98,
    'T':98,
    'Y':98,
    }
    #导入模板地址
    doc = DocxTemplate(path)
    # 参数字典内容加载到模板中
    doc.render(data_dic)
    #保存到指定文件夹,附加文档名称
    doc.save(PATH + 'Watch.docx')

接下来是Word模板的设置了:
在Word模板中 以花括号包裹的,就是可以被传入的参数替换的内容了
        代{过}{滤}理人系:
{{代{过}{滤}理人单位}}
员工
在参数字典中给“代{过}{滤}理人单位”传入参数:
        “代{过}{滤}理人单位:北京市东交民巷”
那么在运行之后:
        Word显示为:
                代{过}{滤}理人系:
北京市东郊民巷
员工
颜色也是能够对应的。

模板代码(插入Word模板中):
  原告惶惶然银行
  {%- if ages -%}
  与被告{{被告名称}}
  {%- elif 住址 -%}
  被告所在地{{住址}}
  {%- else -%}
  立案后适用小额诉讼程序
  {%- endif -%}
  ,公开开庭进行了审理
Word模板显示:


Dingtalk_20240425115502.jpg (20.16 KB, 下载次数: 0)
下载附件
模板中设置的条件
2024-4-25 11:56 上传

若代码中传入{{住址}}的值
生成文书显示:


Dingtalk_20240425115410.jpg (9.89 KB, 下载次数: 0)
下载附件
文书中显示结果
2024-4-25 11:54 上传


参数字典可以通过读取Excel传入,减少更新参数的工作量

模板, 条件

dingbin99   

学习一下
您需要登录后才可以回帖 登录 | 立即注册