Python爬虫项目 去除word文档答案
本程序可以去除下划线部分的docx,和doc格式文件的习题答案。
主要使用的库
- docx (用于操作word文档)
- win32com (用于将doc格式的文件转换成docx)
from docx import Document
import os
import time
import win32com.client as wc
实现
- doc转docx 使用的为wps程序,也可以使用office 只用将
word = wc.gencache.EnsureDispatch('kwps.application') # 打开wps程序
修改为
word = wc.gencache.EnsureDispatch('word.application') # 打开office word程序
- 程序原理为找到带有下划线的部分然后删除并保留出空白,因此需要避免存在除了答案,其他部分存在下划线。效果如下:
修改前
修改后
全部代码如下
# 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)