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

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

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

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

程序模板:

python 复制代码
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_count
    global highlight_index
    # 遍历段落的所有 runs
    runs = paragraph.runs

    for run in runs:
        # 遍历当前 run 中的每个字符
        for i, char in enumerate(run.text):
            if char in 'ABCD':  # 只处理字母 A, B, C, D
                if char == 'A':
                    abcd_count = 0
                    highlight_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进行些预处理。

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

相关推荐
北京耐用通信19 小时前
工业自动化中耐达讯自动化Profibus光纤链路模块连接RFID读写器的应用
人工智能·科技·物联网·自动化·信息与通信
Hgfdsaqwr20 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
开发者小天20 小时前
python中For Loop的用法
java·服务器·python
老百姓懂点AI21 小时前
[RAG实战] 向量数据库选型与优化:智能体来了(西南总部)AI agent指挥官的长短期记忆架构设计
python
喵手1 天前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar1 天前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大1 天前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手1 天前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
0思必得01 天前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
莫问前路漫漫1 天前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程