Python如何用Docx在word文档中将一个段落分成若干段落?

程序目的:使用python将一个段落按照其中的编号顺序进行分成若干段落

word格式文档形如:

1、段落1内容

2、段落1内容2<包含图片内容>

3、段落1内容

有些word看似上边内容是不同的段落,但其实是同一个段落,也就是同一个paragraph,我们的目的是要将这些按照序号标题进行拆分成不同word,这就需要这些内容属于不同的paragraph,最初是在段中各片段(run)有序列号的前方加入’\r\n‘ ,也就是回车,无法实现,因为这是软回车,没法进行实质性的分段,加入后三行内容还是一个段落。

最后换个思路,用paragraph.insertpara_before()方法。将该段text内容按照编号进行分组保存到数组中,然后用For循环以此添加paragraph,加完之后删除原段落。

这样做到的目的主要是避免对文档中的图片进行操作。毕竟docx这个库功能有限,没法对图像进行更多的处理。遇到类似的朋友可以参考该方法。

参考代码如下:

 getForatStrListByPatternList(p_text_line, orderNumPatternList)

该函数为查找p_text_line字符与pattern orderNumPatternList进行正则匹配的数组。返回一个数组

def formatDocParagraph(docfile,orderNumPatternList):
    # 将word文档中进行段落划分,有些文档序列编号都在一个Paragraph中,将它们分到不同的段落中
    doc=Document(docfile)
    for idx ,para in enumerate(doc.paragraphs):
        p_text = para.text.strip()
        new_p_text = ''
        p_text_line=''
        p_text_list = p_text.split('\n')
        para_newList=[]
        if len(p_text_list) > 0:
            for p_text_line in p_text_list :
                tmplist = getForatStrListByPatternList(p_text_line, orderNumPatternList)
                if str(p_text_line[:1]).strip() in delCharList and len(tmplist) > 0:
                    if len(new_p_text)>0:
                        para_newList.append(new_p_text)
                        new_p_text=''
                    new_p_text=p_text_line
                else:
                    new_p_text=new_p_text+'\n'+p_text_line
            para_newList.append(new_p_text)
        if len(para_newList)>1:
            for p_txt in para_newList:
                para.insert_paragraph_before(p_txt)
            #删除自己
            clearDocParagraph(para)
    doc.save(docfile)
    del doc

遇到了这个问题,网络上查了没用找到答案,在此记录一下看,希望对您有所帮助。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值