poind 发表于 2024-4-25 12:09

附条件生成判决的Python方法

本帖最后由 poind 于 2024-4-25 12:55 编辑

# 一、背景
工作中有大量制作文书的需求,需要判断的条件也很多。每天现写,还是扣脑壳。
就考虑通过制作模板,传入指定参数的方式,生成对应文书,然后校对修改的方式减少工作量。

# 二、方案
目前有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')

https://static.52pojie.cn/static/image/hrline/line2.png

接下来是Word模板的设置了:

在Word模板中 以花括号包裹的,就是可以被传入的参数替换的内容了

      代{过}{滤}理人系:{{代{过}{滤}理人单位}}员工

在参数字典中给“代{过}{滤}理人单位”传入参数:
      “代{过}{滤}理人单位:北京市东交民巷”

那么在运行之后:
      Word显示为:
                代{过}{滤}理人系:北京市东郊民巷员工
颜色也是能够对应的。
https://static.52pojie.cn/static/image/hrline/line3.png

模板代码(插入Word模板中):

原告惶惶然银行

{%- if ages -%}

与被告{{被告名称}}

{%- elif 住址 -%}

被告所在地{{住址}}

{%- else -%}

立案后适用小额诉讼程序

{%- endif -%}

,公开开庭进行了审理

Word模板显示:




若代码中传入{{住址}}的值

生成文书显示:



https://static.52pojie.cn/static/image/hrline/line1.png

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


页: [1]
查看完整版本: 附条件生成判决的Python方法