学校给了我一个任务,有几百个文件,有些是docx格式,有些是doc格式,有些事pdf格式
!!!!!!需要注意的是,这个代码不能处理pdf和doc文件,幸好学校给我的那几百个文件里面,pdf、doc占比不是很大,因此对于这两类文件,我就是一个一个打开找的!!!!!!
任务为:在这几百文件里面找出内容里面含有 “小花” 、 “大树” 、“绿草” 这些字眼的文件
直接上代码,我慢慢解释
from docx import Document
import os
#读取文档
path='C:/Users/lenovo/Desktop/encode'
files= os.listdir(path)
这一步为读取你需要处理的文件的路径,以我的这个任务为例,我那几百个文件在 encode这个文件夹下
for file in files:
File=file.split('.')
# 一波小细节,这里面会把slip之后的结果赋给另一个变量 File,和file是不同的,改了名字。
# 为了之后能继续用flie这个变量
if 'pdf' in File:
print(file+' is pdf file')
continue
if 'doc' in File:
print(file + ' is doc file')
continue
ex=[]
doc = Document(path+'/'+file) #filename为word文档
# 处理段的内容,非表格
# 有时候docx文件内会有表格的出现,有表格的话,表格里面的内容会由另外的命令来提取出来
check=['小花','大树','绿草']
pl = [ paragraph.text for paragraph in doc.paragraphs]
for i in pl:
result=i.strip()
# strip() 将句子前后的空格都去除
for c in check:
res=result.find(c) # 这一步就是查找是否文章内容包含了那几个词
if res == -1: # 就是不包含
res=-1
else:
# 就是包含,但是find函数会把那个词的位置也给你标出来,一般输出的为数字 例如238等等,就是那个词的位置在第238个字,在这里,我把它全部换成1,1就仅仅代表包含那个词而已
res=1
ex.append(res)
# 处理word中的表格
for tb in doc.tables:
for rw in tb.rows:
for cell in rw.cells:
text=cell.text
for c in check:
res=text.find(c)
if res == -1:
res = -1
else:
res = 1
ex.append(res)
if 1 in ex:
# 如果ex列表里面包含1,那就说明是有那些词的其中一个的
print(file+' is possible')
!!!!!!需要注意的是,这个代码不能处理pdf和doc文件,幸好学校给我的那几百个文件里面,pdf、doc占比不是很大,因此对于这两类文件,我就是一个一个打开找的!!!!!!
-------------------------
不知道为啥总是说我篇幅太短。。。。