python处理word文档,如何提取文档中的题目与答案

简介: python处理word文档,如何提取文档中的题目与答案

python处理word文档,如何提取文档中的题目与答案

需求分析

文档格式和题目格式如下,就是需要写出一个对象,然后可以提取出这个文档里面,题目,答案,组号,然后封装成一个对象。

在古代中国社会中,私学是与官学相对而存在的,并且在中国教育上占有重要的地位。我国历史上_______私学规模最大、影响最深远。
a、孔子
b、孟子
c、老子
d、墨子
答案:A 
组号:1

具体代码

class Question:
    def __init__(self, id, text, options, answer):
        self.id = id
        self.text = text
        self.options = options
        self.answer = answer
    def __str__(self):
        return f'{self.id}. {self.text} 选项: {self.options} 答案: {self.answer}'
def extract_question_option(text):
    questions = []
    options = []
    answers = []
    lines = text.split('\n')
    # 预处理:去掉空行并将多行题目合并为一行
    for i in range(len(lines)):
        line = lines[i].strip()
        if not line:
            continue
        if i < len(lines) - 1 and lines[i + 1].startswith(('答案:', '组号:')):
            # 当前行不是题目的最后一行,将其添加到前一个题目中
            if len(questions) > 0:
                questions[-1] += line
        else:
            # 当前行是题目的最后一行,将其添加为新的题目
            questions.append(line)
    # 处理选项和答案
    current_question_idx = -1
    for line in lines:
        line = line.strip()
        if not line:
            continue
        if line.startswith('组号:'):
            # 处理组号
            group_id = line.split(':')[1].strip()
            current_question_idx = 0
        elif line.startswith('答案:'):
            # 处理答案
            answer = line.split(':')[1].strip()
            if current_question_idx >= 0 and current_question_idx < len(questions):
                # 创建新的 Question 对象并添加到列表中
                question = Question(current_question_idx + 1, questions[current_question_idx], options[current_question_idx], answer)
                questions[current_question_idx] = question
            current_question_idx += 1
        else:
            # 处理选项
            options_list = line.split('、')
            options = [opt.strip() for opt in options_list]
            if len(options) > 0:
                # 处理非空选项
                if current_question_idx >= 0 and current_question_idx < len(questions):
                    options.append(options)
            else:
                # 处理空选项(没有填写选项)
                if current_question_idx >= 0 and current_question_idx < len(questions):
                    options.append([])
    return questions
if __name__ == '__main__':
    # 读取 Word 文档并解析题目
    file_path = "D:\\系统默认\\桌面\\测试题目-三组.docx"
    text = read_word_document(file_path)
    questions = extract_question_option(text)
    # 遍历题目并打印结果
    for question in questions:
        print(question)

运行结果:

相关文章
|
1月前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
42 1
|
1月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
30 1
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
42 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
1月前
|
人工智能 开发者 Python
python读取word文档 | AI应用开发
在RAG系统中,构建知识库时需读取多种外部文档,其中Word文档较为常见。本文介绍如何使用`python-docx`库读取Word文档(.docx格式)中的标题、段落、表格和图片等内容。首先通过`pip install python-docx`安装库,然后利用提供的接口提取所需信息。尽管该库功能强大,但在识别标题样式时需自定义逻辑,并且仅提供图片的URI而非直接加载。示例代码展示了读取文本、识别标题、读取表格及获取图片URI的方法。【10月更文挑战第2天】
80 2
|
2月前
|
存储 数据采集 关系型数据库
Python之文档数据存储
Python之文档数据存储
|
1月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
1月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
1月前
|
IDE 开发工具 Python
Python自动化操作word--批量替换word文档中的文字
Python自动化操作word--批量替换word文档中的文字
|
3月前
|
JSON 测试技术 API
Python开发解析Swagger文档小工具
文章介绍了如何使用Python开发一个解析Swagger文档的小工具,该工具可以生成符合httprunner测试框架的json/yaml测试用例,同时还能输出Excel文件,以方便测试人员根据不同需求使用。文章提供了详细的开发步骤、环境配置和使用示例,并鼓励读者为该开源项目贡献代码和建议。
80 1
Python开发解析Swagger文档小工具
下一篇
无影云桌面