主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parsejava
1. 文件格式装换python
由于不少各类各样的缘由,至今还有一些word文档是doc的格式存的,对于这种,若是咱们想用python对这个word文档中的内容进行解析的话,理论上必需要处理成docx先。app
若是你恰好是个mac的用户,那你能够不用弄了,由于若是你用python+osx的系统,这个就是个无解的事情,能够考虑下用java之类的方式处理。可是幸运的是我找了一台机器是win系统的,而后我就处理了,代码以下:ui
import os from win32com import client def doc_to_docx(path): if os.path.splitext(path)[1] == ".doc": word = client.Dispatch('Word.Application') doc = word.Documents.Open(path) # 目标路径下的文件 doc.SaveAs(os.path.splitext(path)[0] + ".docx", 16) # 转化后路径下的文件 doc.Close() word.Quit() def find_file(path, ext, file_list=[]): dir = os.listdir(path) for i in dir: i = os.path.join(path, i) if os.path.isdir(i): find_file(i, ext, file_list) else: if ext == os.path.splitext(i)[1]: file_list.append(i) return file_list if __name__ == "__main__": dir_path = "E:\yschen3\pyprogram\线下二维码活动" ext = ".doc" file_list = find_file(dir_path, ext) for file in file_list: doc_to_docx(file) print(file)
大概就是这样,用了个win32com这个包,很是容易,接下来,咱们就能够用python-docx来处理了spa
2. 表格的处理code
这里python有个包教python-dox,就是专门作这个事情的,他能够对段落,表格进行解析和处理。大概说下逻辑blog
1. 会读出全部的表格文档
2. 而后对表格里面的行,一行一行的读it
3. 真对一行,就是一个格子一个格子的读io
这里对于合并处理的单元格,默认的逻辑是,分红两个,写出相同的内容,保持表格维度的一致性,固然这里能够看你的需求,你能够在读取的过程当中,作一次简单的去重过滤。
这里代码在这里:
import os from win32com import client def doc_to_docx(path): if os.path.splitext(path)[1] == ".doc": word = client.Dispatch('Word.Application') doc = word.Documents.Open(path) # 目标路径下的文件 doc.SaveAs(os.path.splitext(path)[0] + ".docx", 16) # 转化后路径下的文件 doc.Close() word.Quit() def find_file(path, ext, file_list=[]): dir = os.listdir(path) for i in dir: i = os.path.join(path, i) if os.path.isdir(i): find_file(i, ext, file_list) else: if ext == os.path.splitext(i)[1]: file_list.append(i) return file_list if __name__ == "__main__": dir_path = "E:\yschen3\pyprogram\线下二维码活动" ext = ".doc" file_list = find_file(dir_path, ext) for file in file_list: doc_to_docx(file) print(file)