# 使用此指令前,请确保安装必要的Python库,例如使用以下命令安装:
# pip install pywin32
import win32com.client as win32
from xbot importprint
from typing import *
definsert_line_break_after_period(docx_path: str):
"""
title: 在Word文档中的句号后面插入换行符(除去双引号中包含的句号)
description: 该函数加载指定路径的Word文档,遍历文档中的每个段落,检查段落中是否包含句号,如果句号不在双引号中,则在句号后面插入一个换行符,并保留原有样式。
inputs:
- docx_path (str): Word文档的文件路径,eg:"your_document.docx"
outputs:
"""
# 打开Word应用程序
word_app = win32.Dispatch("Word.Application")
word_app.Visible = False
# 打开指定路径的Word文档
doc = word_app.Documents.Open(docx_path)
# 遍历文档中的每个段落
for para in doc.Paragraphs:
para_text = para.Range.Text
new_text = ""
in_quotes = False
for i, char inenumerate(para_text):
if char == '“':
in_quotes = True
elif char == '”':
in_quotes = False
if char == '。'andnot in_quotes:
new_text += char + "\n"
else:
new_text += char
para.Range.Text = new_text
# 保存文档
doc.Save()
doc.Close()
word_app.Quit()
现在的问题是,win32可以识别到文章中的英文“”,用这种方法可以实现在每个“”后面插入换行符,但让它识别文章。时,哪怕写了遍历文档中的每个段落,检查段落中是否包含句号,如果句号不在双引号中,则在句号后面插入一个换行符,并保留原有样式。
他也会对“”中间的句号进行换行处理,求大佬们给个方案~