记一次用python对docx文档的处理

本文讲述了作者使用Python解决马原题目和答案分隔问题的过程,通过正则表达式分割答案,根据文档结构判断题目与选项,最终实现自动拼接并写入新文档。
摘要由CSDN通过智能技术生成

前言

最近,我们马原老师给了我们关于马原的例题,但是他的题和答案是分开的,总共96页。当时,我就???。总不能看几道题就往后翻吧,那可是九十页的啊。让我一个一个的移答案?那是不可能的。于是我就想用python来替我完成。

文档结构

题目分为单选题、多选题、和简答题(简答题没有答案)。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
欧克。了解了文档的结构,那么现在就开始完成这项任务。

代码的编写

首先引入库。

import docx
import re 
import sys

为了更好的显示进度,我在分割答案、拼接答案、写入文件这三个过程中都加了进度条。

分割答案

然后定位答案的位置,将答案弄到两个列表中(第一题和第二题)。
在分割答案时,本来我想用空格来分割的,但是他给的答案中空格并不是一样的,这就可能造成有空元素,和答案分割错误。最后,我决定用正则来匹配数字来分割。

try:
	doc = docx.Document("马克思主义基本原理概论.docx")
	first = []
	second = []
	flag1 = 0
	for i in range(4076,4099):
	
		sys.stdout.write(' ' * 90 + '\r')
		sys.stdout.flush()
		sys.stdout.write("正在读取答案中({0:.2f}%):".format((i+1-4076)/23*100)+"["+"#"*int((i+1-4076)/23*40)+"-"*(40-int((i+1-4076)/23*40))+"]"+'\r')
		sys.stdout.flush() //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值