当前位置: 首页 > news >正文

用python自动标注word试题选项注意事项

1. 先把word内容全选,再右键以文本形式保存,防止有的题ABCD是文本,有的题ABCD选项是word编号;

2. 如果ABCD选项有大量缺项,以A为一个循环切换答案输入:

在此之前,用查找补充齐A,保证每题都有A选项。查找时,可以100个为一组,再用2分法加速找到缺A项的题:

程序模板:

from docx import Document
from docx.shared import RGBColor# 读取 Word 文件
word_file_path = 'D:/实验室/小任务/标答案/仅保留文本.docx'  # 替换为你的 Word 文件路径
doc = Document(word_file_path)# 给定的列表(例如:['a', 'b', 'd'])
highlight_str = ["ABCCBCCBABABBABABDABBBCBBBDCADADBCDBAADDDADCAABBBADBABBDACCBAAAACDCAADBCBCCBDBBDDCBACCBBBBBBBBBBBBBBCBCDBDBCBDDAADBBCCCCDCBABBABBCAABCAA"]
highlight_list = list(highlight_str[0])  # 将字符串转为字符列表# 用于追踪“abcd”循环的计数器
abcd_count = 0
# 用于追踪 highlight_list 中当前的字母索引
highlight_index = -1# 定义一个函数用于在字符后添加文本
def add_text(paragraph, highlight_list):global abcd_countglobal highlight_index# 遍历段落的所有 runsruns = paragraph.runsfor run in runs:# 遍历当前 run 中的每个字符for i, char in enumerate(run.text):if char in 'ABCD':  # 只处理字母 A, B, C, Dif char == 'A':abcd_count = 0highlight_index = highlight_index + 1# 如果当前字符是需要标记的字母if char == highlight_list[highlight_index]:# 在字符后追加 "[正确答案]",并设置为红色run.text = run.text[:i + 1] + '【正确答案】'  # 在字符后追加文本# run.font.color.rgb = RGBColor(255, 0, 0)  # 设置文本为红色# 打印调试信息print(f"Added '[正确答案]' after char: {char} at index {highlight_index}")# 每次遇到一个字母,我们更新计数器和列表索引abcd_count += 1# 遍历文档中的段落并处理
for para in doc.paragraphs:add_text(para, highlight_list)# 保存更新后的 Word 文件
highlighted_file_path = 'D:/实验室/小任务/标答案/标记测试.docx'
doc.save(highlighted_file_path)print(f"文档已保存,路径为:{highlighted_file_path}")

答案放这就好:

感悟:

word自动化处理编程本身不难,难在word格式不规则的话,就得找到规则的部分加以利用,必要时得对word进行些预处理。

不然的话,就得提升程序的鲁棒性,能识别处理同一个东西的不同形式,如大小写、字体样式等等。

http://www.lryc.cn/news/598651.html

相关文章:

  • 基于k2-icefall实践Matcha-TTS中文模型训练2
  • 机器学习概述与 KNN 算法详解
  • 湖北大数据集团赴OpenCSG三峡传神社区调研指导
  • 虚拟电厂——解读69页 2024虚拟电厂售电业务及共享储能等新型业态趋势【附全文阅读】
  • YOLO11有效涨点优化:注意力魔改 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测
  • 深入解析文件操作(下)- 文件的(顺序/随机)读写,文件缓冲区,更新文件
  • 模块化商城的快速部署之道:ZKmall开源商城如何让电商功能即插即用
  • 前端安全问题怎么解决
  • 常用设计模式系列(十一)—外观模式
  • C++ 中打开文件的多种方式及相关流类
  • 三维手眼标定
  • Windows下使用UIAutomation技术遍历桌面窗口和指定窗口内容的AutomationWalker.exe的C#源代码
  • Java中的静态变量是在“堆“还是“方法区“?
  • 视频模型国产PK国外?
  • Leetcode—1035. 不相交的线【中等】
  • TDengine 转化类函数 CAST 用户手册
  • Windows 11下纯软件模拟虚拟机的设备模拟与虚拟化(仅终端和网络)
  • C++性能优化实战‘从毫秒到微秒的底层突围‘
  • Windows 10 停服:个人与企业的 “系统选择题”
  • MNIST 手写数字识别模型分析
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——4. 前后端联动:打通QML与C++的任督二脉
  • LAYOUT 什么时候需要等长布线?
  • 【牛客刷题】和零在一起
  • 【Linux】Linux了解与基本指令(1)
  • 数据库期中复习
  • SkyWalking异步采集spring gateway日志
  • postgresql执行创建和删除时遇到的问题
  • AWS云S3+Glue+EMRonEC2+ReadShift
  • ThinkPHP8集成RabbitMQ的完整案例实现
  • 使用 Strands Agents 开发并部署生产级架构通用型个人助手