跳转至

用题型数组怎么分段word

如果你有一个包含题型的数组(例如 ["单选题", "多选题", "判断题", "问答题"]),并且希望根据这些题型将 Word 文档分段提取内容,可以按照以下步骤实现:

  1. 解析 Word 文档:使用 python-docx 库读取文档内容。
  2. 根据题型分段:通过题型数组中的关键词识别每种题型的起始位置。
  3. 提取内容:根据题型分段提取题目和答案。
  4. 保存结果:将每种题型的内容保存到单独的 Word 文档中。

以下是完整的实现代码:


1. 安装依赖库

确保安装了 python-docx 库:

pip install python-docx

2. 实现代码

以下代码会根据题型数组分段提取内容,并将每种题型保存到单独的 Word 文档中:

from docx import Document

def split_content_by_question_types(doc, question_types):
    """
    根据题型数组分段提取内容
    :param doc: Document 对象
    :param question_types: 题型数组,如 ["单选题", "多选题", "判断题", "问答题"]
    :return: 字典,键为题型,值为对应的段落列表
    """
    content = {q_type: [] for q_type in question_types}  # 初始化字典
    current_type = None  # 当前题型

    for paragraph in doc.paragraphs:
        text = paragraph.text.strip()

        # 检查是否匹配题型
        for q_type in question_types:
            if q_type in text:
                current_type = q_type
                break

        # 将段落添加到当前题型的内容中
        if current_type:
            content[current_type].append(paragraph)

    return content

def save_content_to_docx(content, output_folder):
    """
    将分段后的内容保存到单独的 Word 文档中
    :param content: 字典,键为题型,值为对应的段落列表
    :param output_folder: 输出文件夹路径
    """
    for q_type, paragraphs in content.items():
        if paragraphs:  # 如果该题型有内容
            doc = Document()
            for paragraph in paragraphs:
                doc.add_paragraph(paragraph.text)
            output_path = f"{output_folder}/{q_type}.docx"
            doc.save(output_path)
            print(f"已保存: {output_path}")

# 主函数
def main():
    input_path = 'path/to/your/input.docx'  # 替换为你的输入文件路径
    output_folder = 'output_questions'  # 输出文件夹路径
    question_types = ["单选题", "多选题", "判断题", "问答题"]  # 题型数组

    # 创建输出文件夹
    import os
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 打开 Word 文档
    doc = Document(input_path)

    # 根据题型分段提取内容
    content = split_content_by_question_types(doc, question_types)

    # 将分段后的内容保存到单独的 Word 文档中
    save_content_to_docx(content, output_folder)

if __name__ == "__main__":
    main()

3. 代码说明

  1. 分段提取内容
  2. 使用题型数组中的关键词(如“单选题”、“多选题”)识别每种题型的起始位置。
  3. 将每个段落归类到对应的题型中。

  4. 保存结果

  5. 为每种题型创建一个新的 Word 文档。
  6. 将归类后的段落添加到对应的文档中。

  7. 题型数组

  8. 你可以根据需要扩展或修改题型数组。

4. 示例输入

假设输入文件 input.docx 内容如下:

单选题
1. 中国的首都是哪里?
A. 上海
B. 北京
C. 广州
D. 重庆
答案:B

多选题
2. 以下哪些是水果?(多选)
A. 苹果
B. 香蕉
C. 土豆
D. 西瓜
答案:A, B, D

判断题
3. 太阳从西边升起。
答案:错误

问答题
4. 请简述水的化学式。
答案:水的化学式是 H₂O。

5. 示例输出

运行代码后,生成的 output_questions 文件夹中包含以下文件:

  • 单选题.docx

    单选题
    1. 中国的首都是哪里?
    A. 上海
    B. 北京
    C. 广州
    D. 重庆
    答案:B
    

  • 多选题.docx

    多选题
    2. 以下哪些是水果?(多选)
    A. 苹果
    B. 香蕉
    C. 土豆
    D. 西瓜
    答案:A, B, D
    

  • 判断题.docx

    判断题
    3. 太阳从西边升起。
    答案:错误
    

  • 问答题.docx

    问答题
    4. 请简述水的化学式。
    答案:水的化学式是 H₂O。
    


6. 注意事项

  1. 题型关键词
  2. 确保题型数组中的关键词与文档中的标记一致。

  3. 复杂格式

  4. 如果题目包含图片、表格或复杂格式,可能需要进一步处理。

  5. 性能

  6. 如果文档较大,处理时间可能会较长。

希望这段代码能帮助你根据题型分段提取内容!如果有其他需求,请随时告诉我!