吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 806|回复: 0
收起左侧

[Python 原创] 附条件生成判决的Python方法

[复制链接]
poind 发表于 2024-4-25 12:09
本帖最后由 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')




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

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

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

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

那么在运行之后:
        Word显示为:
                代{过}{滤}理人系:北京市东郊民巷员工
颜色也是能够对应的。


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

  原告惶惶然银行

  {%- if ages -%}

  与被告{{被告名称}}

  {%- elif 住址 -%}

  被告所在地{{住址}}

  {%- else -%}

  立案后适用小额诉讼程序

  {%- endif -%}

  ,公开开庭进行了审理

Word模板显示:


模板中设置的条件

模板中设置的条件


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

生成文书显示:

文书中显示结果

文书中显示结果




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


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表