python小作业
word文档的搜索(多关键字)
题目要求:允许用户输入关键词(可以是空格分开的几个关键词),搜索某个文件夹(及子文件夹)下面的所有word(docx)文档的内容(段落内容及表格内容)。
对于每个word文档,要求输出所有包含用户关键词的段落。
自定义段落(表格)内容搜索相关度,能够输出相关段落与关键词的相关度
19信管二dkh
import os
import os.path
from docx import Document#docx操作库,需另外安装
import difflib#字符串相关度库
path='d:/main'
#搜索的路径提前预设
key=input("输入关键字")
ls1=key.split(' ')
def finddocx(path):
ls=os.listdir(path)
for f in ls:
try:#try语句防止遇到空文件夹时报错
fpath=os.path.join(path,f)
if os.path.isdir(fpath):
finddocx(fpath)
else:
if fpath[-5:]=='.docx':#筛选后缀为docx的文件
doc = Document(fpath)#打开文件
sum=len(doc.paragraphs)#sum用来存储文章段落数
print("{}文件表格中含关键字的段落:".format(fpath))
for t in doc.tables:
for i in range(len(t.rows)):
for j in range(len(t.rows[i].cells)):
s2=len(t.rows[i].cells[j].paragraphs)
for g in range(s2):
s1=t.rows[i].cells[j].paragraphs[g].text
for z in ls1:#多关键字遍历
for k in range(len(s1)-len(z)+1):
if(s1[k:k+len(z)]==z):#寻找与关键字相同的表格
seq=difflib.SequenceMatcher(None,z,s1)
ratio=seq.ratio()#关键字与表格文字相关度
print(s1)
print("相关度:{:.2f}".format(ratio))
s1=""
print("{}文件文本中含关键字的段落:".format(fpath))
for i in range(sum):
pa=doc.paragraphs[i]#读取每一段的内容存储在s变量中
s=pa.text
for k in ls1:#多关键字遍历
for j in range(len(s)-len(k)+1):
if(s[j:j+len(k)]==k):
#寻找与关键字相同的段落
seq1=difflib.SequenceMatcher(None,k,s)
ratio1=seq1.ratio()#关键字与段落相关度
print(s)
print("相关度:{:.2f}".format(ratio1))
s=""
doc.save(fpath)
except:
continue
finddocx(path)


浙公网安备 33010602011771号