日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

【Python】实战多word的内容合并筛选及输出

發(fā)布時(shí)間:2025/3/12 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】实战多word的内容合并筛选及输出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

導(dǎo)語(yǔ)

領(lǐng)導(dǎo)給了一個(gè)任務(wù):已知每天公司會(huì)發(fā)一個(gè)“每日要情”doc文件,求一年每日要情中所有數(shù)字化轉(zhuǎn)型相關(guān)內(nèi)容的匯編。

開發(fā)工具

python版本:3.8.8

相關(guān)模塊:

os

docx

win32com

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。


代碼全解

解這種辦公自動(dòng)化的題,最簡(jiǎn)單易懂的思路就是用python全程模擬人的全套動(dòng)作。那么人肉暴力解這道題是怎么解?首先要人肉將所有word文檔粘貼在一起,再Ctrl+F查找數(shù)字化轉(zhuǎn)型相關(guān)的關(guān)鍵詞,把搜到的內(nèi)容整理到另外一個(gè)word里。目測(cè)兩天兩夜弄不完,即使弄得完,也會(huì)被機(jī)械勞動(dòng)惡心死。

那么整個(gè)項(xiàng)目就被分解為三大動(dòng)作:合并word,檢索word,輸出word。

1. 合并word

雖然處理word和excel有很多庫(kù),比如處理excel的xlrd、xlwt、xlutils、xlwings、openpyxl、xlsxwriter,處理word的python-docx、docx2txt、textract、antiword。

但是他們都不如win32com這個(gè)神器好用。它能支持office所有的com接口。這個(gè)接口的使用說(shuō)明在微軟的官網(wǎng)也可以查詢到。有了這么完備的接口,我們就能在office的功能中“為所欲為”。其他的庫(kù),更加輕量,但是如果要用到更復(fù)雜的功能的時(shí)候,可能就比較捉襟見肘。

更要命的是沒有支持doc文件的庫(kù),大部分只支持docx文件。

那么如何用win32com合并doc文件并生成docx文件,就成了本項(xiàng)目最關(guān)鍵的一步。

import os import win32com.client as win32word = win32.gencache.EnsureDispatch('Word.Application')#啟動(dòng)word對(duì)象應(yīng)用 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)#獲取合并后文檔的內(nèi)容 doc = output.Range(output.Content.Start, output.Content.End)#保存docx文檔 output.SaveAs('D://pythonProject//meiriyaoqing//result.docx') output.Close()

差不多等個(gè)10多分鐘,800多頁(yè),88萬(wàn)字的報(bào)告就合并完成了。

所有doc內(nèi)容被合并到了result.docx里。

2.?檢索word

首先讀取result.docx的內(nèi)容看看一共有多少個(gè)段落。

import docx from docx import Documentdoc = Document("result.docx") print("段落數(shù):"+str(len(doc.paragraphs))) print(len(doc.paragraphs))

把所有段落存放在一個(gè)名為text的列表中。

#段落內(nèi)容存入列表 text=[] for i in range(len(doc.paragraphs)):text.append(doc.paragraphs[i].text)print("第"+str(i)+"段的內(nèi)容是:"+doc.paragraphs[i].text) print(text)

按內(nèi)容來(lái)劃分這些段落,將有數(shù)字化轉(zhuǎn)型及其相關(guān)詞的段落全部取出,放在第一部分。

#按內(nèi)容分類result=docx.Document()paragraph1 = result.add_paragraph("\n數(shù)字化轉(zhuǎn)型相關(guān)內(nèi)容:\n")for i in text:flag=0if '數(shù)字化轉(zhuǎn)型' in i:print(i)result.add_paragraph(i, style='List Number')flag=1if '5G' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1if 'RPA' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1if '人工智能' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1

按專業(yè)來(lái)劃分這些段落,將有信通專業(yè)及其相關(guān)詞的段落全部取出,排除掉其中包含有信通公司但是屬于現(xiàn)場(chǎng)作業(yè)類的段落,放在第二部分。

#按專業(yè)分類:paragraph2 = result.add_paragraph("\n信通公司相關(guān)內(nèi)容:\n")for i in text:if '現(xiàn)場(chǎng)作業(yè)' 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("每日要情智能分類結(jié)果.docx")

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁(yè)完整版課件

本站qq群955171419,加入微信群請(qǐng)掃碼:

總結(jié)

以上是生活随笔為你收集整理的【Python】实战多word的内容合并筛选及输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。