日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python辦公神器:教你使用 Python 批量整理通知文件

來源: 責編: 時間:2024-04-25 17:40:09 159觀看
導讀你是否遇到過這樣的情況:你有一堆Word文件,每個文件都包含一些重要的信息,你需要把這些信息提取出來,整理到一個Excel表格中,方便查閱和管理。但是,手動打開每個文件,復制粘貼信息,又太費時費力,而且容易出錯。有沒有什么辦法

你是否遇到過這樣的情況:你有一堆Word文件,每個文件都包含一些重要的信息,你需要把這些信息提取出來,整理到一個Excel表格中,方便查閱和管理。但是,手動打開每個文件,復制粘貼信息,又太費時費力,而且容易出錯。H0b28資訊網——每日最新資訊28at.com

H0b28資訊網——每日最新資訊28at.com

有沒有什么辦法可以讓Python幫你自動完成這個任務呢?答案是肯定的!本文將教你如何用Python批量提取Word文件中的關鍵信息,并寫入Excel文件中,只需幾行代碼,就可以節(jié)省大量的時間和精力。H0b28資訊網——每日最新資訊28at.com

H0b28資訊網——每日最新資訊28at.com

準備工作

在開始編寫代碼之前,我們需要先準備一些必要的工具和文件:H0b28資訊網——每日最新資訊28at.com

  • Python環(huán)境:本文使用的是Python 3.8,你可以在下載安裝。
  • openpyxl庫:這是一個用于操作Excel文件的Python庫,你可以使用pip install openpyxl命令安裝。
  • python-docx庫:這是一個用于操作Word文件的Python庫,你可以使用pip install python-docx命令安裝。
  • glob庫:這是一個用于獲取文件路徑的Python庫,一般已經內置在Python中,無需安裝。
  • Word文件:這是我們要提取信息的源文件,本文以7個會議通知文件為例,每個文件都包含學習時間、學習內容、學習形式、主持人四項關鍵信息,文件名分別為會議通知1.docx,會議通知2.docx,...,會議通知7.docx,存放在Notice文件夾下。
  • Excel文件:這是我們要寫入信息的目標文件,本文以一個空白的Excel文件為例,文件名為Meeting_temp.xlsx,存放在與Notice文件夾同一級的目錄下。

獲取文件路徑

第一步,我們需要獲取Notice文件夾下的所有Word文件的路徑,這樣我們才能對每個文件進行操作。這里我們可以使用glob庫的glob函數(shù),它可以根據(jù)通配符匹配文件路徑,返回一個列表。例如,我們可以使用glob.glob('*.docx')來匹配當前目錄下的所有以.docx結尾的文件。H0b28資訊網——每日最新資訊28at.com

為了方便后續(xù)的操作,我們先定義一個變量path,表示我們的工作目錄,也就是Notice文件夾和Excel文件所在的目錄,你可以根據(jù)實際情況修改。然后,我們使用glob.glob(path + r'/Notice/*.docx')來獲取Notice文件夾下的所有Word文件的路徑,保存在一個變量files中。注意,這里我們使用了r字符串,表示原始字符串,不會對反斜杠進行轉義。H0b28資訊網——每日最新資訊28at.com

代碼如下:H0b28資訊網——每日最新資訊28at.com

import globpath = r'C:/Users/xxx' # 路徑為Notice文件夾和Excel文件所在的目錄,可按實際情況更改files = glob.glob(path + r'/Notice/*.docx') # 獲取Notice文件夾下的所有Word文件的路徑print(files) # 打印文件路徑列表,檢查是否正確

輸出如下:H0b28資訊網——每日最新資訊28at.com

['C://Users//xxx//Notice//會議通知1.docx', 'C://Users//xxx//Notice//會議通知2.docx', 'C://Users//xxx//Notice//會議通知3.docx', 'C://Users//xxx//Notice//會議通知4.docx', 'C://Users//xxx//Notice//會議通知5.docx', 'C://Users//xxx//Notice//會議通知6.docx', 'C://Users//xxx//Notice//會議通知7.docx']

解析Word文件

第二步,我們需要解析每個Word文件,獲取需要的四個信息,即學習時間、學習內容、學習形式、主持人。這里我們可以使用python-docx庫的Document類,它可以讀取Word文件,并將其內容以段落(Paragraph)為單位進行劃分。我們可以遍歷每個段落,根據(jù)其文本內容,判斷是否包含我們需要的信息,并提取出來。H0b28資訊網——每日最新資訊28at.com

為了方便后續(xù)的操作,我們先定義一個變量number,表示序號,用于記錄每個文件的順序。然后,我們使用一個for循環(huán),遍歷files列表中的每個文件路徑,使用Document類打開每個文件,保存在一個變量wordfile中。接著,我們定義一個空列表content_lst,用于存放學習內容,因為學習內容可能分散在多個段落中,我們需要將它們合并成一個字符串。然后,我們使用一個嵌套的for循環(huán),遍歷wordfile中的每個段落,根據(jù)其文本內容,判斷是否包含我們需要的信息,并提取出來,保存在相應的變量中。具體的判斷邏輯如下:H0b28資訊網——每日最新資訊28at.com

  • 如果段落的文本以“學習時間:”開頭,那么我們就提取其后面的部分,保存在一個變量study_time中。
  • 如果段落的文本以“主持人:”開頭,那么我們就提取其后面的部分,保存在一個變量host中。
  • 如果段落的文本以“學習形式:”開頭,那么我們就提取其后面的部分,保存在一個變量study_type中。
  • 如果段落的文本的長度大于等于2,且第一個字符是數(shù)字,第二個字符是中文頓號“、”,那么我們就認為這是學習內容的一部分,將其添加到content_lst中。

代碼如下:H0b28資訊網——每日最新資訊28at.com

from docx import Documentnumber = 0 # 定義一個變量,表示序號for file in files: # 遍歷每個文件路徑    wordfile = Document(file) # 打開每個文件    content_lst = [] # 定義一個空列表,用于存放學習內容    for paragraph in wordfile.paragraphs: # 遍歷每個段落        if paragraph.text[0:5] == '學習時間:': # 如果段落的文本以“學習時間:”開頭            study_time = paragraph.text[5:] # 提取其后面的部分,保存在study_time中        if paragraph.text[0:4] == '主持人:': # 如果段落的文本以“主持人:”開頭            host = paragraph.text[4:] # 提取其后面的部分,保存在host中        if paragraph.text[0:5] == '學習形式:': # 如果段落的文本以“學習形式:”開頭            study_type = paragraph.text[5:] # 提取其后面的部分,保存在study_type中        if len(paragraph.text) >= 2: # 如果段落的文本的長度大于等于2            if paragraph.text[0].isdigit() and paragraph.text[1] == '、': # 如果第一個字符是數(shù)字,第二個字符是中文頓號“、”                content_lst.append(paragraph.text) # 將其添加到content_lst中    content = ' '.join(content_lst) # 將content_lst中的元素用空格連接成一個字符串,保存在content中    print(study_time, content, study_type, host) # 打印提取的信息,檢查是否正確

寫入Excel文件

第三步,我們需要將提取的信息寫入Excel文件中,這樣我們就可以方便地查看和管理。這里我們可以使用openpyxl庫的Workbook類和Worksheet類,它們可以創(chuàng)建和操作Excel文件和工作表。我們可以使用Workbook類的active屬性,獲取當前活動的工作表,保存在一個變量sheet中。然后,我們可以使用Worksheet類的cell方法,根據(jù)行號和列號,指定單元格,并給其賦值。H0b28資訊網——每日最新資訊28at.com

為了方便后續(xù)的操作,我們先定義一個變量excel_file,表示我們要寫入的Excel文件的路徑,你可以根據(jù)實際情況修改。然后,我們使用Workbook類創(chuàng)建一個Excel文件對象,保存在一個變量wb中。H0b28資訊網——每日最新資訊28at.com

接著,我們使用wb的active屬性,獲取當前活動的工作表,保存在一個變量sheet中。然后,我們使用sheet的cell方法,給第一行的每一列賦值,作為表頭,分別是序號、學習時間、學習內容、學習形式、主持人。H0b28資訊網——每日最新資訊28at.com

接下來,我們使用一個for循環(huán),遍歷files列表中的每個文件路徑,使用Document類打開每個文件,保存在一個變量wordfile中。然后,我們使用和上一步相同的邏輯,提取每個文件中的四個信息,保存在相應的變量中。H0b28資訊網——每日最新資訊28at.com

最后,我們使用sheet的cell方法,給每一行的每一列賦值,分別是序號、學習時間、學習內容、學習形式、主持人。注意,這里我們需要將序號加1,因為第一行已經被表頭占用了。最后,我們使用wb的save方法,保存Excel文件。H0b28資訊網——每日最新資訊28at.com

代碼如下:H0b28資訊網——每日最新資訊28at.com

from openpyxl import Workbookexcel_file = path + r'/Meeting_temp.xlsx' # 定義Excel文件的路徑,可按實際情況更改wb = Workbook() # 創(chuàng)建一個Excel文件對象sheet = wb.active # 獲取當前活動的工作表sheet.cell(row=1, column=1).value = '序號' # 給第一行第一列賦值,作為表頭sheet.cell(row=1, column=2).value = '學習時間' # 給第一行第二列賦值,作為表頭sheet.cell(row=1, column=3).value = '學習內容' # 給第一行第三列賦值,作為表頭sheet.cell(row=1, column=4).value = '學習形式' # 給第一行第四列賦值,作為表頭sheet.cell(row=1, column=5).value = '主持人' # 給第一行第五列賦值,作為表頭for file in files: # 遍歷每個文件路徑    wordfile = Document(file) # 打開每個文件    content_lst = [] # 定義一個空列表,用于存放學習內容    for paragraph in wordfile.paragraphs: # 遍歷每個段落        if paragraph.text[0:5] == '學習時間:': # 如果段落的文本以“學習時間:”開頭            study_time = paragraph.text[5:] # 提取其后面的部分,保存在study_time中        if paragraph.text[0:4] == '主持人:': # 如果段落的文本以“主持人:”開頭            host = paragraph.text[4:] # 提取其后面的部分,保存在host中        if paragraph.text[0:5] == '學習形式:': # 如果段落的文本以“學習形式:”開頭            study_type = paragraph.text[5:] # 提取其后面的部分,保存在study_type中        if len(paragraph.text) >= 2: # 如果段落的文本的長度大于等于2            if paragraph.text[0].isdigit() and paragraph.text[1] == '、': # 如果第一個字符是數(shù)字,第二個字符是中文頓號“、”                content_lst.append(paragraph.text) # 將其添加到content_lst中    content = ' '.join(content_lst) # 將content_lst中的元素用空格連接成一個字符串,保存在content中    number += 1 # 將序號加1    sheet.cell(row=number+1, column=1).value = number # 給每一行第一列賦值,作為序號    sheet.cell(row=number+1, column=2).value = study_time # 給每一行第二列賦值,作為學習時間    sheet.cell(row=number+1, column=3).value = content # 給每一行第三列賦值,作為學習內容    sheet.cell(row=number+1, column=4).value = study_type # 給每一行第四列賦值,作為學習形式    sheet.cell(row=number+1, column=5).value = host # 給每一行第五列賦值,作為主持人wb.save(excel_file) # 保存Excel文件

完成任務

至此,我們已經完成了用Python批量提取Word文件中的關鍵信息,并寫入Excel文件中的任務。你可以打開Meeting_temp.xlsx文件,查看結果,如下圖所示:H0b28資訊網——每日最新資訊28at.com

H0b28資訊網——每日最新資訊28at.com

你可以看到,我們成功地將7個Word文件中的四個信息提取出來,并按照序號、學習時間、學習內容、學習形式、主持人的順序,寫入Excel文件中,方便查閱和管理。H0b28資訊網——每日最新資訊28at.com

總結

本文教你如何用Python批量提取Word文件中的關鍵信息,并寫入Excel文件中,只需幾行代碼,就可以節(jié)省大量的時間和精力。本文涉及到的主要技術點有:H0b28資訊網——每日最新資訊28at.com

  • openpyxl庫:用于操作Excel文件,可以創(chuàng)建、讀取、寫入、修改Excel文件和工作表。
  • python-docx庫:用于操作Word文件,可以讀取、寫入、修改Word文件和段落。
  • glob庫:用于獲取文件路徑,可以根據(jù)通配符匹配文件路徑,返回一個列表。

本文鏈接:http://www.www897cc.com/showinfo-26-85540-0.htmlPython辦公神器:教你使用 Python 批量整理通知文件

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C#讀寫 INI 文件的最簡方法

下一篇: C# 讀寫 JSON 配置文件詳解

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 微信語音大揭秘:為什么禁止轉發(fā)?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發(fā)?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發(fā)仿造稿定設計的圖片編輯器到現(xiàn)在,不知不覺已過去一年時間了,期間我經歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業(yè)人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業(yè)用途。(幾小時前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 騰訊VS網易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經無忌7月16日晚,上海1862時尚藝術中心。伴隨著幻象的精準命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊,拿下了總決
  • OPPO K11搭載高性能石墨散熱系統(tǒng):旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 榮耀Magicbook V 14 2021曙光藍版本正式開售,擁有觸摸屏

    榮耀 Magicbook V 14 2021 曙光藍版本正式開售,搭載 i7-11390H 處理器與 MX450 顯卡,配備 16GB 內存與 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 鍵盤鍵程、
Top 主站蜘蛛池模板: 两当县| 太白县| 济宁市| 正安县| 微山县| 大兴区| 繁峙县| 盈江县| 芦山县| 南靖县| 宁河县| 金乡县| 永川市| 沐川县| 土默特左旗| 延庆县| 保亭| 亳州市| 荥经县| 延寿县| 龙口市| 沙坪坝区| 齐齐哈尔市| 兴海县| 普洱| 康保县| 杭锦旗| 海宁市| 阿克陶县| 苏尼特左旗| 双峰县| 河北区| 常德市| 朝阳市| 紫金县| 恩平市| 巨鹿县| 宣化县| 东乡县| 老河口市| 望谟县|