文檔整合自動化

主要功能是按照JSON文件(Sort.json)中指定的順序合并多個Word文檔(.docx),并清除文檔中的所有超鏈接。最終輸出合并后的文檔名為"sorted_按章節順序.docx"。

主要分為幾個部分:

初始化配置
  1. 定義超鏈接清除函數(處理段落+表格)
  2. 獲取當前工作目錄
讀取排序規則
  1. 解析Sort.json文件
  2. 構建完整文件路徑列表
文件驗證
  1. 檢查JSON中所有文件是否存在
  2. 輸出缺失文件警告

主流程:讀取JSON,驗證文件,合并文檔

環境配置步驟:

安裝好 Python 和成功配置相應的環境變量,我的 Python 版本為 3.8.2
需要安裝 win32com、docx、docxcompose,分別輸入以下代碼安裝

pip install pypiwin32
pip install python-docx
pip install docxcompose
💡 提示:安裝后可通過 python -c "import win32com; print('成功')" 驗證

代碼簡略版:

!/usr/bin/python3.6
# -*- coding: utf-8 -*-
"""
@Time    :24-12 10:07
@Software: PyCharm
@Project :Merge files001
"""
import os
import json
from docx import Document
from docxcompose.composer import Composer# 清除文檔中的所有超鏈接
def remove_hyperlinks(doc):for para in doc.paragraphs:for run in para.runs:# 通過run的XML屬性查看是否為超鏈接if 'hyperlink' in run._r.xml:run._r.getparent().remove(run._r) for table in doc.tables:for row in table.rows:for cell in row.cells:for para in cell.paragraphs:for run in para.runs:if 'hyperlink' in run._r.xml:run._r.getparent().remove(run._r) 
# 獲取當前工作目錄( cwd )
cwd = os.getcwd()
# 讀取JSON文件并獲取排序信息
def get_order_from_json(json_path):# 讀取 JSON 文件,獲取文件列表with open(json_path, 'r', encoding='utf-8') as f:data = json.load(f)return [os.path.join(cwd, 'Word_Test', file_name) for file_name in data['file_order']]
# 調用函數讀取排序信息
json_path = 'Sort.json'  #JSON文件路徑
ordered_files = get_order_from_json(json_path)# 使用排序后的文件列表進行合并
def combine_all_docx_ordered(filename_master, files_list_ordered):# 確保文件列表不為空if not files_list_ordered:print("沒有文檔可供合并。")returntry:master = Document(filename_master) remove_hyperlinks(master)  except Exception as e:print(f"無法打開主文檔{filename_master}{e}")return# 在循環之前添加一個分頁符,合并后的文檔從第二頁開始。master.add_page_break()  composer = Composer(master)# 如果文件列表中只有一個文件,即主文檔自身,直接保存即可if len(files_list_ordered) == 1:print("只有一個文檔,無需合并。")master.save("single_doc.docx")returnfor doc_temp_path in files_list_ordered[1:]:  try:doc_temp = Document(doc_temp_path)  remove_hyperlinks(doc_temp) except Exception as e:print(f"無法打開文檔 {doc_temp_path}:{e}")continuedoc_temp.add_page_break() composer.append(doc_temp) # 保存合并后的文檔try:composer.save("sorted_按章節順序.docx")print("合并后的文檔已保存。")except Exception as e:print(f"保存合并文檔時出錯: {e}")# 驗證JSON中的文件是否存在
def verify_files_existence(files_paths):existing_files = []missing_files = []for file_path in files_paths:if os.path.exists(file_path):existing_files.append(file_path)else:missing_files.append(file_path)return existing_files, missing_files
# 驗證文件并處理不存在的文件
existing_files, missing_files = verify_files_existence(ordered_files)if missing_files:print("以下文件在JSON中指定但未找到:")for missing_file in missing_files:print(missing_file)
else:# 合并文檔# 調用新的函數進行合并combine_all_docx_ordered(ordered_files[0], ordered_files)print("————按JSON排序合并完成————")

創建 Sort.json 文件,其中按自定義順序存儲需合并的 Word 文檔名稱。
運行腳本后,程序將按 JSON 定義的順序自動合并文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907919.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907919.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907919.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式(C語言篇)Day13

嵌入式Day13 一段話總結 文檔主要介紹帶有頭指針和尾指針的單鏈表的實現及操作,涵蓋創建、銷毀、頭插、尾插、按索引/數據增刪查、遍歷等核心操作,強調頭插/尾插時間復雜度為O(1),按索引/數據操作需遍歷鏈表、時間復雜度為O(n),并…

【ASR】基于分塊非自回歸模型的流式端到端語音識別

論文地址:https://arxiv.org/abs/2107.09428 摘要 非自回歸 (NAR) 模型在語音處理中越來越受到關注。 憑借最新的基于注意力的自動語音識別 (ASR) 結構,與自回歸 (AR) 模型相比,NAR 可以在僅精度略有下降的情況下實現有前景的實時因子 (RTF) 提升。 然而,識別推理需要等待…

RNN循環網絡:給AI裝上“記憶“(superior哥AI系列第5期)

🔄 RNN循環網絡:給AI裝上"記憶"(superior哥AI系列第5期) 嘿!小伙伴們,又見面啦!👋 上期我們學會了讓AI"看懂"圖片,今天要給AI裝上一個更酷的技能——…

DAY41 CNN

可以看到即使在深度神經網絡情況下,準確率仍舊較差,這是因為特征沒有被有效提取----真正重要的是特征的提取和加工過程。MLP把所有的像素全部展平了(這是全局的信息),無法布置到局部的信息,所以引入了卷積神…

【仿生系統】愛麗絲機器人的設想(可行性優先級較高)

非程序化、能夠根據環境和交互動態產生情感和思想,并以微妙、高級的方式表達出來的能力 我們不想要一個“假”的智能,一個僅僅通過if-else邏輯或者簡單prompt來模擬情感的機器人。您追求的是一種更深層次的、能夠學習、成長,并形成獨特“個性…

面向連接的運輸:TCP

目錄 TCP連接 TCP報文段結構 往返時間估計與超時 可靠數據傳輸 回退N步or超時重傳 超時間隔加倍 快速重傳 流量控制 TCP連接管理 三次握手 1. 客戶端 → 服務器:SYN 包 2. 服務器 → 客戶端:SYNACK 包 3. 客戶端 → 服務器:AC…

SpringAI系列 - 升級1.0.0

目錄 一、調整pom二、MessageChatMemoryAdvisor調整三、ChatMemory get方法刪除lastN參數四、QuestionAnswerAdvisor調整Spring AI發布1.0.0正式版了?? ,搞起… 一、調整pom <properties><java.version>17</java.version><spring-ai.version>

前端高頻面試題2:JavaScript/TypeScript

1.什么是類數組對象 一個擁有 length 屬性和若干索引屬性的對象就可以被稱為類數組對象&#xff0c;類數組對象和數組類似&#xff0c;但是不能調用數組的方法。常見的類數組對象有 arguments 和 DOM 方法的返回結果&#xff0c;還有一個函數也可以被看作是類數組對象&#xff…

Spring Security入門:創建第一個安全REST端點項目

項目初始化與基礎配置 創建基礎Spring Boot項目 我們首先創建一個名為ssia-ch2-ex1的空項目(該名稱與配套源碼中的示例項目保持一致)。項目需要添加以下兩個核心依賴: org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-secur…

秋招Day12 - 計算機網絡 - UDP

說說TCP和UDP的區別&#xff1f; TCP使用無邊界的字節流傳輸&#xff0c;可能發生拆包和粘包&#xff0c;接收方并不知道數據邊界&#xff1b;UDP采用數據報傳輸&#xff0c;數據報之間相互獨立&#xff0c;有邊界。 應用場景方面&#xff0c;TCP適合對數據的可靠性要求高于速…

【QQ音樂】sign簽名| data參數加密 | AES-GCM加密 | webpack (下)

1.目標 網址&#xff1a;https://y.qq.com/n/ryqq/toplist/26 我們知道了 sign P(n.data)&#xff0c;其中n.data是明文的請求參數 2.webpack生成data加密參數 那么 L(n.data)就是密文的請求參數。返回一個Promise {<pending>}&#xff0c;所以L(n.data) 是一個異步函數…

Codeforces Round 1028 (Div. 2)(A-D)

題面鏈接&#xff1a;Dashboard - Codeforces Round 1028 (Div. 2) - Codeforces A. Gellyfish and Tricolor Pansy 思路 要知道騎士如果沒了那么這個人就失去了攻擊手段&#xff0c;貪心的來說我們只需要攻擊血量少的即可&#xff0c;那么取min比較一下即可 代碼 void so…

【存儲基礎】存儲設備和服務器的關系和區別

文章目錄 1. 存儲設備和服務器的區別2. 客戶端訪問數據路徑場景1&#xff1a;經過服務器處理場景2&#xff1a;客戶端直連 3. 服務器作為"中轉站"的作用 剛開始接觸存儲的時候&#xff0c;以為數據都是存放在服務器上的&#xff0c;服務器和存儲設備是一個東西&#…

macOS 安裝 Grafana + Prometheus + Node Exporter

macOS 安裝指南&#xff1a;Grafana Prometheus Node Exporter 目錄簡介&#x1f680; 快速開始 安裝 Homebrew1. 安裝 Homebrew2. 更新 Homebrew 安裝 Node Exporter使用 Homebrew 安裝驗證 Node Exporter 安裝 Prometheus使用 Homebrew 安裝驗證安裝 安裝 Grafana使用 Home…

不可變集合類型轉換異常

記錄一個異常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目錄 1、原因2、解決方式一3、解決方式二4、關于不可變集合的補充4.1 JDK8和9的對比4…

【DAY37】早停策略和模型權重的保存

內容來自浙大疏錦行python打卡訓練營 浙大疏錦行 知識點&#xff1a; 過擬合的判斷&#xff1a;測試集和訓練集同步打印指標模型的保存和加載 僅保存權重保存權重和模型保存全部信息checkpoint&#xff0c;還包含訓練狀態 早停策略 作業&#xff1a; 對信貸數據集訓練后保存權…

【Zephyr 系列 3】多線程與調度機制:讓你的 MCU 同時干多件事

好的,下面是Zephyr 系列第 3 篇:聚焦 多線程與調度機制的實踐應用,繼續面向你這樣的 Ubuntu + 真板實戰開發者,代碼清晰、講解通俗、結構規范,符合 CSDN 高質量博客標準。 ??關鍵詞:Zephyr、線程調度、k_thread、k_sleep、RTOS、BluePill ??適合人群:想從裸機開發進…

實現RabbitMQ多節點集群搭建

目錄 引言 一、環境準備 二、利用虛擬機搭建 ? 三、鏡像集群配置 四、HAProxy實現負載均衡(主用虛擬機操作) 五、測試RabbitMQ集群搭建情況 引言 在現代分布式系統中&#xff0c;消息隊列&#xff08;Message Queue&#xff09;扮演著至關重要的角色,而 RabbitMQ 作為…

異步上傳石墨文件進度條前端展示記錄(采用Redis中String數據結構實現-蘇東坡版本)

昔者&#xff0c;有客臨門&#xff0c;亟需自石墨文庫中擷取卷帙若干。此等文冊&#xff0c;非止一卷&#xff0c;乃累牘連篇&#xff0c;亟需批量轉置。然吾輩慮及用戶體驗&#xff0c;當效東坡"腹有詩書氣自華"之雅意&#xff0c;使操作如行云流水&#xff0c;遂定…

Axure 基礎入門

目錄 認識產品經理 項目團隊* 基本概述 認識產品經理 A公司產品經理 B公司產品經理 C公司產品經理 D公司產品經理 產品經理工作范圍 產品經理工作流程* 產品經理的職責 產品經理的分類 產品經理能力要求 產品工具 產品體驗報告 原型設計介紹 原型設計概述 為…