去除带下划线的word文档答案

Python爬虫项目 去除word文档答案

本程序可以去除下划线部分的docx,和doc格式文件的习题答案。

主要使用的库

  1. docx (用于操作word文档)
  2. win32com (用于将doc格式的文件转换成docx)
from docx import Document
import os
import time
import win32com.client as wc

实现

  1. doc转docx 使用的为wps程序,也可以使用office 只用将
 word = wc.gencache.EnsureDispatch('kwps.application')  # 打开wps程序
 

修改为

 word = wc.gencache.EnsureDispatch('word.application')  # 打开office word程序
  1. 程序原理为找到带有下划线的部分然后删除并保留出空白,因此需要避免存在除了答案,其他部分存在下划线。效果如下:

修改前
在这里插入图片描述
修改后
在这里插入图片描述

全部代码如下

# coding=utf-8
from docx import Document
import os
import time
import win32com.client as wc


def doc_to_docx(docpath):
    """
    doc转换为docx格式
    :param docpath: 文件绝对路径
    :return: 文件转换后的路径
    """
    path= os.path.split(docpath)[0]
    name=os.path.split(docpath)[1]
    docname= os.path.splitext(name)[0]
    suffix=os.path.splitext(name)[1]
    if suffix == '.doc':
        word = wc.gencache.EnsureDispatch('kwps.application')  # 打开wps程序
        doc=word.Documents.Open(docpath)

        new_docpath =os.path.join(path,name) + 'x'
        print(new_docpath)
        doc.SaveAs2(new_docpath, 12)
        doc.Close()
        word.Quit()
        return new_docpath
    elif suffix == '.docx':
        return docpath
    else:
        raise Exception


#word文档的路径
word_path = r"C:\Users\ASUS\Desktop\q.doc"

word_parent_path=os.path.split(word_path)[0]
#获取文档对象
#如果文档为doc则自动转换为docx
document = Document(doc_to_docx(word_path))
#获取文档段落的list
paragraphs = document.paragraphs
print(len(paragraphs))
#段落中包含的runs
for p in paragraphs:
    for run in p.runs:
        if run.font.underline is True:
            run.text = '          '
new_file_name=str(int(time.time()))+'.docx' #使用时间戳作为修改完的文件名
new_file_path=os.path.join(word_parent_path,new_file_name)
document.save(new_file_path)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值