From 14c5906c3f85a4dfa2bc160ed311ddebfd92da54 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Wed, 25 Jun 2025 18:16:18 +0800 Subject: [PATCH] 'commit' --- dsRag/Test/T10_ReadMathWord.py | 37 +++++++++++++++++++++++++++ dsRag/Test/T8_TestReadWord.py | 2 +- dsRag/Txt/小学数学知识点.docx | Bin 0 -> 17528 bytes 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 dsRag/Test/T10_ReadMathWord.py create mode 100644 dsRag/Txt/小学数学知识点.docx diff --git a/dsRag/Test/T10_ReadMathWord.py b/dsRag/Test/T10_ReadMathWord.py new file mode 100644 index 00000000..f8444492 --- /dev/null +++ b/dsRag/Test/T10_ReadMathWord.py @@ -0,0 +1,37 @@ +from Util.WordUtil import * +import re + + +def split_text_blocks(text): + """ + 根据三种规则分割文本: + 1. 以'一、'到'二十、'等序号开头则按序号分割 + 2. 只有一个段落则按句子分割 + 3. 有多个段落且有完整空行则按空行分割 + """ + # 规则1:检查是否有序号标题(支持一到二十) + if re.search(r'^[一二三四五六七八九十]、|^十[一二三四五六七八九]、|^二十、', text, flags=re.MULTILINE): + blocks = re.split(r'(^[一二三四五六七八九十]、.*\n|^十[一二三四五六七八九]、.*\n|^二十、.*\n)', text, + flags=re.MULTILINE) + # 合并标题和内容 + return [blocks[i] + blocks[i + 1] for i in range(1, len(blocks), 2)] + + # 规则3:检查是否有完整空行 + paragraphs = text.split('\n\n') + if len(paragraphs) > 1: + return paragraphs + + # 规则2:按句子分割 + return re.split(r'(?<=[。!?])\s+', text) + + +# 测试代码 +if __name__ == "__main__": + doc_path = "../Txt/小学数学知识点.docx" + text = read_word_file(doc_path) + knowledge = split_text_blocks(text) + idx = 0 + for x in knowledge: + idx = idx + 1 + print(f"发现新的分块:{idx}") + print(x) diff --git a/dsRag/Test/T8_TestReadWord.py b/dsRag/Test/T8_TestReadWord.py index f870d5c6..178afebe 100644 --- a/dsRag/Test/T8_TestReadWord.py +++ b/dsRag/Test/T8_TestReadWord.py @@ -6,7 +6,7 @@ from Util.WordUtil import * # 使用示例 if __name__ == "__main__": - word_file = R"D:\办公\【曲靖】技术参数_教育数据基座20250525(1).docx" + word_file = r"../Txt/小学数学知识点.docx" content = read_word_file(word_file) if content: # 逐行打印,空行不打印 diff --git a/dsRag/Txt/小学数学知识点.docx b/dsRag/Txt/小学数学知识点.docx new file mode 100644 index 0000000000000000000000000000000000000000..5b9cdc331109cc96dbe09e4e71de402696135b9f GIT binary patch literal 17528 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 A761SM literal 0 HcmV?d00001