最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python操作Word文檔屬性與字數統(tǒng)計的方法詳解

 更新時間:2026年04月17日 15:01:09   作者:站大爺IP  
這篇文章主要為大家詳細介紹了Python操作Word文檔屬性與字數統(tǒng)計的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

?小李是剛入職場的行政助理,這天領導扔給他30份項目報告,要求統(tǒng)計每份報告的字數,還要提取創(chuàng)建時間和最后修改作者。手動打開一個個Word文檔復制粘貼,顯然不現實,小李決定用Python試試。

準備工作:安裝與導入

操作Word文檔最常用的庫是python-docx。它只支持.docx格式,老舊的.doc格式需要先轉換。

pip install python-docx

安裝完成后,在代碼中導入。處理日期時間還需要datetime庫:

from docx import Document
from datetime import datetime

讀取文檔屬性

Word文檔的屬性就像文件的“身份證”,記錄了標題、作者、創(chuàng)建時間、修改次數等信息。這些信息藏在文檔的“Core Properties”部分,python-docx可以輕松讀取。

def get_doc_properties(doc_path):
    doc = Document(doc_path)
    core_props = doc.core_properties
    
    info = {
        "標題": core_props.title,
        "作者": core_props.author,
        "分類": core_props.category,
        "狀態(tài)": core_props.content_status,
        "創(chuàng)建時間": core_props.created,
        "修改時間": core_props.modified,
        "最后保存者": core_props.last_modified_by,
        "修訂次數": core_props.revision
    }
    return info

props = get_doc_properties("項目報告.docx")
for key, value in props.items():
    print(f"{key}: {value}")

輸出結果類似于:

標題: 2024年度項目總結
作者: 張三
創(chuàng)建時間: 2024-12-01 10:30:00
最后保存者: 李四
修訂次數: 5

注意createdmodified返回的是datetime對象,可以直接用strftime格式化。

字數統(tǒng)計:主體內容

字數統(tǒng)計稍微復雜些。文檔里的文字分散在不同的地方:段落、表格、頁眉頁腳、文本框。先統(tǒng)計最常見的主體段落和表格。

def count_word_document(doc_path):
    doc = Document(doc_path)
    
    total_chars = 0
    
    for paragraph in doc.paragraphs:
        text = paragraph.text.strip()
        total_chars += len(text)
    
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                text = cell.text.strip()
                total_chars += len(cell.text)
    
    return total_chars

word_count = count_word_document("項目報告.docx")
print(f"文檔總字符數: {word_count}")

這里用len(text)統(tǒng)計字符數。對中文來說,每個漢字算1個字符。英文場景下可能需要按空格分詞來統(tǒng)計單詞數,用len(text.split())即可。

進階字數統(tǒng)計:包含頁眉頁腳

頁眉頁腳往往藏著重要信息,比如公司名稱、文檔版本。統(tǒng)計它們能讓字數更完整。

def count_with_headers(doc_path):
    doc = Document(doc_path)
    total_chars = 0
    
    for paragraph in doc.paragraphs:
        total_chars += len(paragraph.text)
    
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                total_chars += len(cell.text)
    
    for section in doc.sections:
        header = section.header
        for paragraph in header.paragraphs:
            total_chars += len(paragraph.text)
        
        footer = section.footer
        for paragraph in footer.paragraphs:
            total_chars += len(paragraph.text)
    
    return total_chars

通過doc.sections遍歷每個節(jié),再分別訪問頁眉和頁腳的段落。

注意事項

段落與Run的區(qū)別python-docx把一段文字拆成多個Run對象,每個Run是一段樣式相同的連續(xù)文本。直接取paragraph.text會合并所有Run的文本,對字數統(tǒng)計沒影響。但如果要統(tǒng)計帶格式的文字數量,可以遍歷paragraph.runs分別處理。

性能問題:幾十上百頁的文檔,遍歷所有表格和段落沒問題。上千頁的超長文檔,建議分頁讀取或換用更底層的lxml直接解析XML。

分頁統(tǒng)計python-docx本身不提供精確的頁數統(tǒng)計。如果依賴分頁符來分頁,可以用paragraph.contains_page_break判斷:

def estimate_pages(doc_path):
    doc = Document(doc_path)
    page_breaks = sum(1 for p in doc.paragraphs if p.contains_page_break)
    return page_breaks + 1

這種方法只對手動插入分頁符的文檔有效,純自動排版的文檔會返回1。

完整示例:批量處理腳本

把上面內容整合成一個批量處理腳本:

import os
from docx import Document
from datetime import datetime

def analyze_doc(doc_path):
    try:
        doc = Document(doc_path)
        props = doc.core_properties
        
        char_count = 0
        for para in doc.paragraphs:
            char_count += len(para.text)
        for table in doc.tables:
            for row in table.rows:
                for cell in row.cells:
                    char_count += len(cell.text)
        
        return {
            "文件": os.path.basename(doc_path),
            "字符數": char_count,
            "作者": props.author,
            "創(chuàng)建時間": props.created.strftime("%Y-%m-%d") if props.created else "未知"
        }
    except Exception as e:
        print(f"處理失敗 {doc_path}: {e}")
        return None

folder = "./reports"
for filename in os.listdir(folder):
    if filename.endswith(".docx"):
        full_path = os.path.join(folder, filename)
        result = analyze_doc(full_path)
        if result:
            print(f"{result['文件']} - {result['字符數']}字 - {result['作者']}")

跑一遍腳本,30份報告的字數和作者信息就全部提取出來了。小李把結果導出到Excel,圓滿完成了任務。

總結

python-docx處理Word文檔屬性與字數統(tǒng)計,核心就三點:doc.core_properties獲取元數據、遍歷doc.paragraphsdoc.tables統(tǒng)計文字、doc.sections訪問頁眉頁腳。代碼量不大,卻能把重復勞動徹底自動化。下次領導再丟來一堆文檔,就知道怎么優(yōu)雅應對了。

?到此這篇關于Python操作Word文檔屬性與字數統(tǒng)計的方法詳解的文章就介紹到這了,更多相關Python操作Word內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python獲取時間戳的多種方法總結

    Python獲取時間戳的多種方法總結

    時間戳是一個表示日期和時間的數值,通常以秒為單位,在Python中,獲取時間戳是常見的任務,用于記錄事件、計時操作、以及在各種應用中跟蹤時間,本文將介紹多種獲取時間戳的方法,包括標準庫和第三方庫的方式,并提供示例代碼以幫助你更好地理解
    2023-11-11
  • Linux上安裝Python的PIL和Pillow庫處理圖片的實例教程

    Linux上安裝Python的PIL和Pillow庫處理圖片的實例教程

    這里我們來看一下在Linux上安裝Python的PIL和Pillow庫處理圖片的實例教程,包括一個使用Pillow庫實現批量轉換圖片的例子:
    2016-06-06
  • python+selenium實現163郵箱自動登陸的方法

    python+selenium實現163郵箱自動登陸的方法

    本篇文章主要介紹了python+selenium實現163郵箱自動登陸的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Python數據可視化的五種方法小結

    Python數據可視化的五種方法小結

    大家好,在數據驅動決策的時代,數據可視化是挖掘數據價值的重要一環(huán),本文將介紹五種極為實用的高級可視化圖表,從原理到代碼實現,一站式助力繪制數據圖,需要的朋友可以參考下
    2025-04-04
  • Pandas 中的 drop_duplicates()詳解

    Pandas 中的 drop_duplicates()詳解

    Pandas 中的 drop_duplicates() 函數用于從 DataFrame 中刪除重復的行,該函數有一些參數,允許你進行不同方式的重復行處理,本文給大家介紹Pandas 中的 drop_duplicates(),感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • Opencv+Python識別PCB板圖片的步驟

    Opencv+Python識別PCB板圖片的步驟

    這篇文章主要介紹了Opencv+Python識別PCB板圖片的步驟,幫助大家更好的理解和使用python進行機器學習,感興趣的朋友可以了解下
    2021-01-01
  • Python opencv實現人眼/人臉識別以及實時打碼處理

    Python opencv實現人眼/人臉識別以及實時打碼處理

    這篇文章主要為大家詳細介紹了Python opencv實現人眼、人臉識別,以及實時打碼處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 重溫Python基礎之列表操作

    重溫Python基礎之列表操作

    這篇文章主要帶大家來復習一下Python基礎中的列表操作,不知道各位還記得多少呢?文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-11-11
  • 基于Python實現在控制臺查看excel的內容

    基于Python實現在控制臺查看excel的內容

    這篇文章主要為大家詳細介紹了如何基于Python實現在控制臺查看excel的內容,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 使用Python防止SQL注入攻擊的實現示例

    使用Python防止SQL注入攻擊的實現示例

    這篇文章主要介紹了使用Python防止SQL注入攻擊的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

乡城县| 邯郸市| 加查县| 梅州市| 孟州市| 乾安县| 萨迦县| 台北市| 恩平市| 满洲里市| 吉林市| 甘泉县| 丹阳市| 平乐县| 唐山市| 富锦市| 金昌市| 深泽县| 尚志市| 阿拉善盟| 栾川县| 孝义市| 南通市| 濉溪县| 嵊泗县| 建瓯市| 海城市| 乌海市| 米易县| 桐庐县| 文登市| 平顺县| 乐都县| 汉寿县| 安泽县| 临城县| 宝应县| 长寿区| 金坛市| 信丰县| 定州市|