python-读写docx文档-插入图片+修改格式-解决方案

使用docx包,搜索关键字,然后在关键字后插入拼接好的序列(同时设置背景色),随后逐张插入图片。

# _*_ coding:utf-8 _*_

from docx import Document
from docx.shared import Inches, Cm
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_COLOR_INDEX

def process(name, seq, in_file, out_file, imgs):
    document = Document(in_file)
    keyword = "蛋白名称"
    # 遍历,查找关键词
    for paragraph in document.paragraphs:
        if keyword in paragraph.text:
            # 计算插入位置
            pos = paragraph.text.find(keyword) + len(keyword)
            # 分割现有文本
            before_text = paragraph.text[:pos]
            after_text = paragraph.text[pos:]
            # 设置段落文本为分割后的文本
            paragraph.text = before_text
            # 插入header
            run = paragraph.add_run("\n>" + name + "\n")
            run = paragraph.add_run("氨基酸序列\n" + seq + "\n")
            # 关于背景色看下面的链接
            # https://python-docx.readthedocs.io/en/latest/dev/analysis/features/text/font-highlight-color.html?highlight=highlight
            run.font.highlight_color = WD_COLOR_INDEX.TURQUOISE
            #run = paragraph.add_run(after_text)
            # 插入图片
            run = paragraph.add_run()
            for img in imgs:
                run.add_picture(img, width=Cm(12))
            # 整段对齐
            paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
            # 跳出
            break
    document.save(out_file)

if __name__ == "__main__":
    name = "PDP1-RD-CDS"
    seq = "M***V*"
    in_file = "模板.docx"
    out_file = "输出.docx"
    imgs = ['1.png', '2.png']
    process(name, seq, in_file, out_file, imgs)
上一篇:Hive数仓操作(十一)-三、Hive 空值处理函数


下一篇:信息论与人工智能辅助教育: 提高教育质量的关键技术