【Python】实战多word的内容合并筛选及输出
導語
領導給了一個任務:已知每天公司會發一個“每日要情”doc文件,求一年每日要情中所有數字化轉型相關內容的匯編。
開發工具
python版本:3.8.8
相關模塊:
os
docx
win32com
環境搭建
安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。
代碼全解
解這種辦公自動化的題,最簡單易懂的思路就是用python全程模擬人的全套動作。那么人肉暴力解這道題是怎么解?首先要人肉將所有word文檔粘貼在一起,再Ctrl+F查找數字化轉型相關的關鍵詞,把搜到的內容整理到另外一個word里。目測兩天兩夜弄不完,即使弄得完,也會被機械勞動惡心死。
那么整個項目就被分解為三大動作:合并word,檢索word,輸出word。
1. 合并word
雖然處理word和excel有很多庫,比如處理excel的xlrd、xlwt、xlutils、xlwings、openpyxl、xlsxwriter,處理word的python-docx、docx2txt、textract、antiword。
但是他們都不如win32com這個神器好用。它能支持office所有的com接口。這個接口的使用說明在微軟的官網也可以查詢到。有了這么完備的接口,我們就能在office的功能中“為所欲為”。其他的庫,更加輕量,但是如果要用到更復雜的功能的時候,可能就比較捉襟見肘。
更要命的是沒有支持doc文件的庫,大部分只支持docx文件。
那么如何用win32com合并doc文件并生成docx文件,就成了本項目最關鍵的一步。
import os import win32com.client as win32word = win32.gencache.EnsureDispatch('Word.Application')#啟動word對象應用 word.Visible = False#獲取文件夾中的所有doc文件的文件名 path = r'D:\pythonProject\meiriyaoqing\2021年每日要情' files = [] for filename in os.listdir(path):filename = os.path.join(path,filename)files.append(filename)#新建合并后的文檔 output = word.Documents.Add()#拼接文檔 for file in files:output.Application.Selection.InsertFile(file)#獲取合并后文檔的內容 doc = output.Range(output.Content.Start, output.Content.End)#保存docx文檔 output.SaveAs('D://pythonProject//meiriyaoqing//result.docx') output.Close()差不多等個10多分鐘,800多頁,88萬字的報告就合并完成了。
所有doc內容被合并到了result.docx里。
2.?檢索word
首先讀取result.docx的內容看看一共有多少個段落。
import docx from docx import Documentdoc = Document("result.docx") print("段落數:"+str(len(doc.paragraphs))) print(len(doc.paragraphs))把所有段落存放在一個名為text的列表中。
#段落內容存入列表 text=[] for i in range(len(doc.paragraphs)):text.append(doc.paragraphs[i].text)print("第"+str(i)+"段的內容是:"+doc.paragraphs[i].text) print(text)按內容來劃分這些段落,將有數字化轉型及其相關詞的段落全部取出,放在第一部分。
按專業來劃分這些段落,將有信通專業及其相關詞的段落全部取出,排除掉其中包含有信通公司但是屬于現場作業類的段落,放在第二部分。
#按專業分類:paragraph2 = result.add_paragraph("\n信通公司相關內容:\n")for i in text:if '現場作業' in i:continueif '信通公司' in i:print(i)result.add_paragraph(i, style='List Number')if '信通分公司' in i:print(i)result.add_paragraph(i, style='List Number')if '信息通信分公司' in i:print(i)result.add_paragraph(i, style='List Number')3.?輸出word
result.save("每日要情智能分類結果.docx")往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【Python】实战多word的内容合并筛选及输出的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 利用RTMP或RTSP实现跨平台一对一互
- 下一篇: win10如何关闭Windows Def
